Windows “Aç Birlikte” komut satırı argümanlarını ilet


28

Belirli bir kısayolla açılan bir programım var, ancak kısayol uygulamaya parametreler gönderiyor gibi görünüyor. Doğrudan hedef dizine gidip çift tıklarsam, çalışmaz. Ancak, komut satırını kullanır ve belirli bir argümana geçersem, uygulama doğru açılır.

Uygulamayı kullanarak belirli dosya türlerini açmak istiyorum, ancak uygulamanın parametreleri olması gerekir, aksi halde çalışmayacaktır. Böyle bir şey yapmak mümkün mü?


Hangi Windows sürümünü kullanıyorsunuz?
iglvzx

Windows 7 kullanıyorum
jtpereyda

1
Bunun daha iyi çözümleri var: superuser.com/questions/136133/…

Yanıtlar:


20

Aynı jtpereyda ile aynı sorunu yaşadık ve @ bobbymcr'nin çözümü de benim için işe yaramadı. Komuttaki node.exe dosyasına ihtiyaç duymadan tüm komut satırı parametrelerini node.js komut dosyalarına iletmeye çalışıyordum.

Sorun, programı Open Withiletişim kutusu aracılığıyla uzantı ile zaten ilişkilendirmişseniz , ikisi arasında bir dosya uzantısı ilişkisi yerine bir uygulama ilişkisi oluşturmuş olmanızdır. Ve uygulama dernekleri önceliklidir.

Kayıt defterini düzenlemekte sakınca yoksa, (Default)anahtarı aşağıdaki yoldan değiştirebilirsiniz:

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

Sen değiştirmelisiniz node.exesen ayarlıyoruz uygulama ile.

Veya uygulama HKEY_CLASSES_ROOT\Applicationsklasörünü tamamen klasörden tamamen silebilirsiniz; ftypedernek çalışmaya başlayacaktır.

%*Belirtilmemiş kalan komut satırı argümanlarından hangisinin geçeceğini ya da hiçbir şey kullanmayacağınızdan emin olun . Bunu "%2" "%3" "%4" "%5"yaparsanız, herhangi bir komut satırı argümanı belirlemediğinizde uygulamanıza 5 boş dize paragrafı iletilir.

Son olarak, kayıt defterini el ile değiştirmek yeterli değilse, Nirsoft - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html adresinden ücretsiz bir araç kullanabilirsiniz.

Dosya ilişkilendirmeleri listenin en üstünde, ilk uzantı sütunda herhangi bir metin olmadan görünecektir. Yürütülebilir dosyanın adını listede bulun command lineve openeylem adı alanını değiştirmek için seçin .

Windows7'de, değişiklikler herhangi bir yeniden başlatma veya uygulama yeniden başlatmadan hemen yansıtıldı. Bununla birlikte, Nirsoft yardımcı programı herhangi bir değişiklikte "Masaüstünü Yenileme" özelliğine sahip olduğundan, Vista veya önceki işletim sistemi sürümlerinin verileri önbelleğe alacağına inanmamı sağlıyor. Bu durumda hizmet programı daha iyi bir bahis olacaktır, aksi takdirde değişiklikleri görmek için oturumu kapatmanız ve oturum açmanız gerekebilir.


1
not olarak:% 1 her zaman ilgili dosyayı programa aktarmak için kullanılmalıdır. doğrudan% * kullanarak çalışmıyor gibi görünüyor. En azından ".pl" ile kazandım - 7 kazandığım perl derneği
vlad_tepesch

1
Aşağıdaki Veri değeriyle sonuçlanan deneme yanılma çalışmasını sağladım: "C:\Program Files\nodejs\node.exe" "%1"%*NOT: %*değer tırnak içinde DEĞİLDİR ve önceki çift alıntı arasında boşluk yoktur.
Michael Paulukonis

Ayrıca işlemi yaptığım dosyaların uzantısı HKEY_CLASSES_ROOT\.ulawolduğu durumlarda regedit'teki anahtarı sildim .ulaw.
Matt

Açarken argümanları geçebilir miyiz (“test” der)?
Apparao

Lütfen bu cevabı, kurulum bağlamına bağlı olarak "[HKLM | HKCU] \ Software \ Classes" 'ı açıkça değiştirmek için değiştirin. HKCR'yi doğrudan değiştirmeyin. Dosya türleri ve makale için "önemli konular" bölümüne HKEY_CLASSES_ROOTbakın. Microsoft'un kendi belgelerinin çoğuna verilen anlaşılabilir bir yanlış anlaşılma, Windows 2000'de tanıtılan HKCR'ın birleştirilmiş görüntüsünden önce geliyor.
Eryk Sun,

10

Sen ile yapabilirsiniz assocve ftypeistemi emrindedir. Yükseltilmiş bir komut istemi açın ve aşağıdakileri deneyin:

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

Bu, .xyzuzantıyı ilişkilendirir ve MyProgram.exekomut satırını /arg1 /arg2 [filename.xyz]çalıştırmak için programa iletir.


1
Kabul edildi, çünkü bu araştırdıklarımın doğru cevabı gibi görünüyor. Ancak, bu işlem kullandığım sistemde etkisiz görünüyor. Değişikliklerin gerçekleştiğini doğrulamak için ftype ve assoc komutunu kullanabilirim, ancak dosyaları açmak için kullanılan programı etkilemez. Belki de işlem Windows 7'de değişmiştir?
jtpereyda

Kullanılması Marcus Papa'nın cevabı Windows 7 kullanan yanımda düzgün çalışması markasını oynamaya çalışıyordu .ulawdosyayı soxondan önceden argümanları kullanarak. Eski uygulamayı silmenin yanı sıra HKEY_CLASSES_ROOT\.ulaw, dosya türünü tanımlayanları da sildim .
Matt

CMD'ler assocve ftypeeski komutlar. Windows XP, 7 ve 8'de eklenen dosya ilişkilendirme uzantıları için güncellenmediler. Yalnızca "HKLM \ Software \ Classes" sistem anahtarı altındaki dosya ilişkilendirme ve ProgId anahtarlarını değiştirdiler. Öncelikli olan kullanıcı başına HKCU ayarlarını veya "Uygulamalar" ve "SystemFileAssociations" gibi yeni alt anahtarları veya "RegisteredApplications" dan uygulama başına yetenek tuşlarını okumuyor veya değiştirmiyorlar. Ayrıca, kullanıcının "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts" altındaki tercihini okumaz veya değiştirmezler.
Eryk Sun,

3

Soruyu yerleştiren kişi En İyi cevabın aslında işe yaramadığını bildirir.

Daha sonra işletim sistemi için geçerli olabilecek XP için anladım.

Bir cmd komut isteminde iki komuta ihtiyacınız vardır: assoc, ftype.

Bu ikisi neyin ilişkili olduğunu gösterebilir ve daha sonra ilişkiyi düzenleyebilir ancak bir bükülme var, MS talimatları yanlış / eksik görünüyor. Bilinen usta başvuruları tarafından belgelenmemiş bir dernek tarzı fark ederek bu konuda uyarıldım, neden?

Bu örnek, ortak programa birçok argümanın aktarılmasını sağlar.

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

Bir yazım hatası değil "%1" "%*". Yüzde yıldız, önceki yüzde 1 olmadan çalışmaz .

Ve bu anında yayınlanıyor, oturumu kapatmaya gerek yok.

Yaptığım doğru 3 argümana geçecek []

myfile.wotsit file1 file2 file3

Bunu yapmadım, ancak programın bir bayrağa ihtiyacı olması durumunda aşağıdaki dış tırnakların geçeceği anlaşılıyor.

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

Bunun doğru olduğunu sanmıyorum. "% *" Etrafında tırnak kullanmak, bağımsız değişkenlerin listesini tek bir bağımsız değişken olarak geçirir. Ayrıca, sürücü harfinden sonra kolonu kaçırdınız. Doğru komut şöyle olmalıdır: ftype name_of_assoc = "C: \ blah \ aprog.exe" -m "% 1"% *
Kullanıcı0

Mükemmel FilesTypeMan programını kullanıyorum ve bu durumda %1 %* fiyat bilgisi gerekmeden !!! lanet pencereler
Jean-François Fabre

2

Windows7 ile PSP'nin eski bir sürümüyle de benzer bir sorun yaşadım

Bu çözüm (Kayıt defterindeki kabuk \ open \ komut satırını değiştirin) çalıştı, ancak% 1'DEN HAYIR "C: \ MyFolderName \ PSP.EXE"% 1 NO QUOTES aksi halde bu sabit olarak yorumlanır.


1
neden indirimler? Bu cevap sonunda emri doğru bulmamda bana yardımcı oldu!
14ka

TEŞEKKÜRLER - Ben teklif aldım ve işe yaramadı
Fiona - myaccessible.website

1

En iyi çözüm değil, en kolay olanı toplu iş dosyası kullanmaktır.

Böyle bir yarasa dosyası oluşturun ve varsayılan programınızı dosya uzantınız için buna ayarlayın. Ve evet, başlangıçtan sonra boş teklif gereklidir:

{uygulama adı} .bat

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

Örnek:

BCompareEdit.bat

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

1
Bu, Windows 10'da benim için çalışan tek çözüm. Word'ü sanal masaüstleriyle kullanmak için gerekli olan her başlatmada yeni bir örneğe sahip olmak için Word 2013'ü / w seçeneğiyle başlatmama yardımcı oluyor.
vicmortelmans

0

İşte tam olarak ne istersen onu yapan bir uzantı. Daha önce hiç kullanmadım, ancak iyi eleştiriler alıyor gibi görünüyor. sorunlar varsa bir yorum bırakın.


-1

Bir Windows kısayolu yapın ve aşağıdaki şablonu kullanın:

"C:\Windows\system32\mspaint.exe" "c:\data\basejpg.jpg" %1

2
Kullanıcı böyle bir dosyayı açmak için bunu nasıl kullanır xyz.jpg?
G-Man,

Bunu başarmak için kayıt defterini nasıl değiştireceğini sordu.
rulolar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.