Lewati argumen baris perintah ke Windows "Open With"


28

Saya memiliki program yang terbuka dengan pintasan tertentu, tetapi pintasan tersebut sepertinya mengirim parameter ke aplikasi. Jika saya langsung pergi ke direktori target dan klik dua kali, itu tidak berfungsi. Namun, jika saya menggunakan baris perintah dan menyampaikan argumen tertentu, aplikasi terbuka dengan benar.

Saya ingin membuka jenis file tertentu menggunakan aplikasi, tetapi aplikasi harus memiliki parameter, atau itu tidak akan berfungsi. Apakah mungkin melakukan hal semacam ini?


Versi Windows apa yang Anda gunakan?
iglvzx

Saya menggunakan Windows 7.
jtpereyda

1
Ini memiliki solusi yang lebih baik: superuser.com/questions/136133/…

Jawaban:


20

Mengalami masalah yang sama dengan @jtpereyda dan solusi dari @bobbymcr juga tidak bekerja untuk saya. Saya mencoba untuk mendapatkan semua parameter baris perintah yang dilewatkan ke skrip node.js tanpa perlu node.exe pada perintah.

Masalahnya adalah bahwa jika Anda telah menghubungkan program dengan ekstensi melalui Open Withdialog maka Anda akan membuat asosiasi aplikasi, alih-alih asosiasi ekstensi file, di antara keduanya. Dan asosiasi aplikasi diutamakan.

Jika Anda tidak keberatan mengedit registri, Anda dapat memodifikasi (Default)kunci di jalur berikut:

HKEY_CLASSES_ROOT\Applications\node.exe\shell\open\command

Anda harus mengganti node.exedengan aplikasi yang Anda sesuaikan.

Atau Anda dapat menghapus folder aplikasi dari HKEY_CLASSES_ROOT\Applicationsfolder sepenuhnya dan ftypeasosiasi Anda akan mulai berfungsi.

Pastikan untuk menggunakan %*yang akan melewati argumen baris perintah yang tidak ditentukan atau tidak ada sama sekali. Jika Anda melakukannya, "%2" "%3" "%4" "%5"Anda akan mendapatkan 5 string string kosong yang dilewatkan ke aplikasi Anda ketika Anda tidak menentukan argumen baris perintah.

Akhirnya, jika Anda tidak setuju dengan memodifikasi registri dengan tangan maka Anda dapat menggunakan alat freeware dari Nirsoft - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html

Asosiasi file akan muncul di bagian atas daftar, tanpa teks di kolom ekstensi pertama. Cukup cari nama yang dapat dieksekusi dalam daftar dan pilih untuk memodifikasi command linebidang untuk opennama tindakan.

Pada windows7, perubahan tercermin segera tanpa reboot atau aplikasi restart. Namun utilitas Nirsoft memiliki fitur untuk "Refresh the Desktop" pada setiap modifikasi, jadi itu membuat saya percaya bahwa mungkin Vista atau versi OS sebelumnya akan menyimpan data. Dalam hal mana utilitas akan menjadi taruhan yang lebih baik, jika tidak, Anda mungkin harus keluar dan masuk untuk melihat perubahannya.


1
sebagai catatan: tampaknya% 1 selalu harus digunakan untuk meneruskan file terkait ke program. langsung menggunakan% * tampaknya tidak berfungsi. Setidaknya saya mendapat masalah dengan ".pl" - asosiasi perl pada kemenangan saya 7
vlad_tepesch

1
Saya membuatnya bekerja dengan coba-coba, menghasilkan nilai Data berikut: "C:\Program Files\nodejs\node.exe" "%1"%*CATATAN: %*nilainya TIDAK dalam tanda kutip, dan tidak memiliki ruang di antara itu dan tanda kutip ganda sebelumnya.
Michael Paulukonis

Saya juga menghapus kunci HKEY_CLASSES_ROOT\.ulawdi regedit untuk berjaga-jaga jika .ulawekstensi file yang saya lakukan prosedur untuk.
Matt

Bisakah kita meneruskan argumen (katakan 'pengujian') saat membuka?
Apparao

Silakan ubah jawaban ini untuk memodifikasi secara eksplisit "[HKLM | HKCU] \ Software \ Classes", tergantung pada konteks instalasi. Jangan memodifikasi HKCR secara langsung. Lihat "pertimbangan penting" untuk jenis file dan HKEY_CLASSES_ROOTartikel. Ini adalah kesalahpahaman yang dapat dimengerti mengingat sebagian besar dokumentasi Microsoft sendiri mendahului pandangan gabungan untuk HKCR yang diperkenalkan sekitar Windows 2000.
Eryk Sun

10

Anda dapat melakukan ini dengan assocdan ftypepada prompt perintah. Buka prompt perintah yang ditinggikan dan coba yang berikut ini:

ftype MyFileType = C: \ MyDir \ MyProgram.exe / arg1 / arg2 "% 1"
assoc .xyz = MyFileType

Ini akan mengaitkan .xyzekstensi dengan MyProgram.exedan akan melewati baris perintah /arg1 /arg2 [filename.xyz]ke program untuk menjalankannya.


1
Diterima karena ini sepertinya jawaban yang tepat dari apa yang telah saya teliti. Namun, proses ini tampaknya tidak efektif pada sistem yang saya gunakan. Saya dapat menggunakan ftype dan assoc untuk memverifikasi bahwa perubahan telah terjadi, tetapi itu tidak mempengaruhi program yang digunakan untuk membuka file. Mungkin prosesnya telah berubah di Windows 7?
jtpereyda

Menggunakan jawaban Marcus Pope membuatnya berfungsi dengan benar di pihak saya menggunakan Windows 7. Sedang mencoba memutar .ulawfile dengan soxmenggunakan argumen yang telah ditentukan sebelumnya. Perhatikan bahwa selain menghapus aplikasi lama, saya juga menghapus HKEY_CLASSES_ROOT\.ulawyang menentukan jenis file.
Matt

CMD assocdan ftypeperintah warisan. Mereka tidak diperbarui untuk ekstensi ke file asosiasi yang ditambahkan di Windows XP, 7, dan 8. Mereka hanya memodifikasi asosiasi file dan kunci ProgId di bawah kunci sistem "HKLM \ Software \ Classes". Mereka tidak membaca atau mengubah pengaturan HKCU per pengguna, yang lebih diutamakan, atau subkunci yang lebih baru seperti "Aplikasi" dan "SystemFileAssociations", atau kunci kemampuan per aplikasi dari "RegisteredApplications". Mereka juga tidak membaca atau memodifikasi pilihan pengguna di bawah "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts".
Eryk Sun

3

Orang yang mengajukan pertanyaan melaporkan jawaban Terbaik tidak benar-benar berfungsi.

Saya sudah menemukan jawabannya untuk XP, yang mungkin berlaku untuk OS yang lebih baru.

Pada prompt cmd Anda memerlukan dua perintah: assoc, ftype.

Keduanya dapat menunjukkan apa yang terkait dan kemudian mengedit asosiasi tetapi ada twist, instruksi MS tampaknya salah / tidak lengkap. Saya diberitahu tentang ini dengan memperhatikan gaya asosiasi tidak berdokumen oleh aplikasi veteran yang dikenal, mengapa?

Contoh ini memungkinkan banyak argumen untuk diteruskan ke program asosiasi.

ftype name_of_assoc="C\blah\aprog.exe" "%1" "%*"

Bukan salah ketik itu "%1" "%*". Bintang persen tidak akan berfungsi tanpa persen sebelumnya 1 .

Dan itu langsung ditayangkan, tidak ada persyaratan untuk logout dll.

Dilakukan dengan benar akan melewati 3 ke arg []

myfile.wotsit file1 file2 file3

Belum melakukannya tetapi sepertinya tanda kutip luar berikut ini akan lewat -m jika program membutuhkan flag.

ftype name_of_assoc="C\blah\aprog.exe" -m "%1" "%*"

Saya pikir ini tidak benar. Menggunakan kutipan di sekitar "% *" akan membuat daftar argumen diteruskan sebagai argumen tunggal. Juga, Anda melewatkan titik dua setelah huruf drive. Perintah yang benar adalah: ftype name_of_assoc = "C: \ blah \ aprog.exe" -m "% 1"% *
Pengguna0

Saya menggunakan program FilesTypeMan yang sangat baik, dan dalam hal ini Anda perlu %1 %* tanpa tanda kutip !!! sialan windows
Jean-François Fabre

2

Saya memiliki masalah yang sama dengan PSP versi lama dengan Windows7

Solusi ini (ubah baris perintah shell \ open \ di Registry) berfungsi tetapi TETAPI harus memiliki sintaks "C: \ MyFolderName \ PSP.EXE"% 1 TANPA KUTIP SELURUH% 1 jika tidak ini akan ditafsirkan sebagai konstanta


1
mengapa downvotes? jawaban ini membantu saya akhirnya mendapatkan perintah dengan benar!
ylka

TERIMA KASIH - Saya punya tanda kutip dan tidak berfungsi
Fiona - myaccessible.website

1

Bukan solusi terbaik tetapi yang paling mudah adalah menggunakan file batch.

Buat file kelelawar seperti itu dan tetapkan program default Anda untuk itu untuk ekstensi file Anda. Dan ya, kutipan kosong setelah mulai diperlukan:

{nama aplikasi} .bat

    start "" "{app path}" %1 /edit

Contoh:

BCompareEdit.bat

    start "" "C:\Program Files\Beyond Compare 4\BCompare.exe" %1 /edit

1
Ini adalah satu-satunya solusi yang bekerja untuk saya di Windows 10. Ini membantu saya untuk memulai Word 2013 dengan opsi / w untuk memiliki contoh baru pada setiap peluncuran, yang diperlukan untuk menggunakan Word dengan desktop virtual.
vicmortelmans

0

Berikut ini adalah ekstensi yang tampaknya melakukan apa yang Anda inginkan. Saya belum pernah menggunakannya sebelumnya, tetapi sepertinya mendapatkan ulasan yang baik. tinggalkan komentar jika ada masalah.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.