Saya ingin menggunakan skrip bash shell dari SendTo
folder. Ketika saya meletakkan shortcut ke batch atau exe ke SendTo
folder itu muncul di Send To
submenu konteks shell , tetapi ketika shortcut menunjuk ke skrip shell itu tidak.
OS yang saya uji ini adalah Win7 Home Premium SP1. Ekstensi tersebut .sh
telah dikaitkan dengan bash.exe MinGW.
Skrip shell saya memiliki .sh
ekstensi dan saya telah mencoba melepaskan .sh
ekstensi tersebut (saya pikir MinGW mengaturnya pada awalnya, tetapi itu tidak berfungsi) menggunakan utilitas ini dan mencoba menghubungkannya kembali ke bash menggunakan:
ftype ShellScript=c:\MinGW\msys\1.0\bin\bash.exe -c "'%1' %2"
assoc .sh=ShellScript
di shell admin cmd. Meskipun ini bekerja pada prompt perintah dan shell Explorer (melalui klik dua kali), itu tidak akan muncul di Send To
menu dan tidak akan menerima parameter dengan menyeret file di atas skrip secara langsung.
Adakah yang tahu bagaimana saya akan melakukan ini?
Move to *dir*
), jadi saya berpikir bahwa itu tidak mengambil parameter untuk beberapa alasan meskipun dieksekusi jika diklik dua kali. Adakah yang tahu mengapa hal ini terjadi?c:\MinGW\msys\1.0\bin\bash.exe -c C:\Path\To\Your\Script.sh
sebagai target pintasanSendTo
?Jawaban:
Ini akan memungkinkan Drag & Drop ke skrip apa pun. Anda dapat menempatkan salah satunya di folder KirimKe dan menggunakannya sesudahnya.
Ekspor Registri:
Bagian heks sebenarnya adalah
"C:\cygwin\bin\bash.exe -c "source $0;read" %1 %*"
yang dikodekan dalam ekspor.Anda mungkin ingin menghapus
read
pengujian setelah, sehingga Anda dapat menulis skrip yang hanya melakukan tugas tanpa meninggalkan jendela yang terbuka. Jika Anda membutuhkan ini untuk skrip tunggal, Anda selalu dapat menambahkannya dan menambahkannya.Gunakan
assoc .ext=ShellFile
setelah mengimpor untuk menautkan ekstensi file apa pun yang Anda inginkan dengan fungsi ini. DropHandler dalam contoh ini berfungsi untuk Windows XP dan Windows 7 (mungkin yang lain juga) dan pada dasarnya berarti "jalankan perintah, dengan semua nama file yang dibuang sebagai argumen".Gunakan ini sebagai skrip (
echotest.ext
) untuk menguji fungsionalitas dasar:sumber
source
menghilangkan permintaan shell lain dan menjawab pertanyaan sisi saya tentang seret dan lepas. Sayangnya itu bukan pertanyaan utama, jadi sayangnya Anda tidak akan mendapatkan hadiahnya. Tapi terima kasih. Saya mencoba mencari tahu ini tanpa hasil. (Y)source
, ini benar-benar poin yang bagus. @Adrian: Sekarang Anda tahu, mengapa SU tidak membiarkan Anda memberi hadiah terlalu cepat. Jawaban IMHO Squeezy layak mendapatkan hadiah, karena jawabannya lebih elegan; jika Anda merasa buruk tentang itu;)
Anda masih dapat menerima jawaban saya (karena itu memecahkan masalah Anda juga), tetapi saya juga akan baik-baik saja dengan upvote saja.Berikut ini cara menyampaikan argumen ke
bash
fungsi shell viaSendTo
(atau via drag & drop). Sebagai contoh saya menggunakan builtinecho
. Tetapkan target untuk tautan Anda diSendTo
folder sebagai berikut:Di sini
$0
singkatan argumen pertama setelah baris perintah yang diberikan a) , yaitu nama file lengkap dari file di mana tindakan sendto dieksekusi.read
menjaga jendela tetap terbuka, sehingga Anda dapat membaca pesan. (Saya mengujinya dengan cygwinbash
, tapi saya pikir mingw jugabash
bisa digunakan.)Dalam kasus Anda, targetnya seharusnya
Sekarang skrip Anda dapat memproses nama file. Tetapi perhatikan, bahwa nama file diteruskan ke skrip sebagai argumen pertama , jadi di dalam skrip nama file dirujuk sebagai
$1
.Terakhir, namun yang tidak kalah penting, berikut adalah dua tangkapan layar sebagai ringkasan:
a) Anda mengutip
man bash
:Untuk memahami hal itu, gunakan misalnya garis target berikut:
Ini akan mencetak
This is Foo
, sementaraakan dicetak
This is Baz
. Jadi "string" adalah segalanya di antara apostrof, danFoo Bar Baz
merupakan argumennya.sumber
Jika Windows menolak untuk menautkan ke file .sh, Anda mungkin dapat mencoba menggunakan file .bat yang memanggil skrip .sh.
Jika itu tidak berhasil, Anda juga bisa mencoba mengkompilasi .bat ke .exe.
Google cepat ditemukan:
Batch Compiler
Bat-To-Exe
sumber
Coba versi terbaru dari file REG (perhatikan bahwa saya menggunakan Windows 7 64-bit; gunakan
System32
sebagai gantiSysWOW64
jika Anda memiliki Win7, Vista, atau XP 32-bit):Ini akan memungkinkan skrip shell Anda juga dijalankan sebagai Administrator seperti halnya file bat. Dengan kata lain, itu membuat semua skrip shell UAC kompatibel saat menggunakan Windows Vista dan Windows 7 atau 8.
sumber