Passa gli argomenti della riga di comando a Windows "Apri con"


28

Ho un programma che si apre con un collegamento specifico, ma il collegamento sembra inviare parametri all'applicazione. Se vado direttamente alla directory di destinazione e faccio doppio clic, non funziona. Tuttavia, se utilizzo la riga di comando e passo un certo argomento, l'applicazione si apre correttamente.

Voglio aprire determinati tipi di file usando l'applicazione, ma l'applicazione deve avere i parametri, altrimenti non funzionerà. È possibile fare questo genere di cose?


Quale versione di Windows stai usando?
iglvzx,

Sto usando Windows 7.
jtpereyda,

1
Questo ha soluzioni migliori: superuser.com/questions/136133/…

Risposte:


20

Ho riscontrato lo stesso problema di @jtpereyda e la soluzione di @bobbymcr non ha funzionato neanche per me. Stavo cercando di ottenere tutti i parametri della riga di comando passati negli script node.js senza bisogno di node.exe sul comando.

Il problema è che se hai già associato il programma con l'estensione tramite la Open Withfinestra di dialogo, avrai creato un'associazione di applicazione, anziché un'associazione di estensione di file, tra i due. E le associazioni di applicazioni hanno la precedenza.

Se non ti dispiace modificare il registro, puoi modificare la (Default)chiave nel seguente percorso:

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

È necessario sostituire node.execon l'applicazione che si sta regolando.

Oppure puoi semplicemente eliminare completamente la cartella dell'applicazione dalla HKEY_CLASSES_ROOT\Applicationscartella e la tua ftypeassociazione inizierà a funzionare.

Assicurati di usare %*quale passerà nei restanti argomenti della riga di comando non specificati o niente del tutto. Se lo fai "%2" "%3" "%4" "%5"otterrai 5 parametri stringa vuoti passati nella tua applicazione quando non specifichi alcun argomento della riga di comando.

Infine, se non si è d'accordo con la modifica manuale del registro, è possibile utilizzare uno strumento freeware di Nirsoft - FileTypesManager - http://www.nirsoft.net/utils/file_types_manager.html

Le associazioni di file verranno visualizzate nella parte superiore dell'elenco, senza alcun testo nella prima colonna di estensione. Trova il nome dell'eseguibile nell'elenco e selezionalo per modificare il command linecampo per il opennome dell'azione.

Su Windows 7 le modifiche sono state immediatamente riflesse senza alcun riavvio o riavvio dell'applicazione. Tuttavia l'utilità Nirsoft ha una funzione per "Aggiornare il desktop" su qualsiasi modifica, quindi mi porta a credere che forse Vista o versioni precedenti del sistema operativo memorizzerebbero i dati nella cache. Nel qual caso l'utilità sarebbe una scommessa migliore, altrimenti potrebbe essere necessario disconnettersi e accedere per vedere le modifiche.


1
come nota: sembra che% 1 debba sempre essere usato per passare il file associato al programma. l'utilizzo diretto di% * sembra non funzionare. Almeno ho avuto problemi con la mia ".pl" - associazione perl sulla mia vittoria 7
vlad_tepesch,

1
Ho funzionato per tentativi ed errori, risultando nel seguente valore di dati: "C:\Program Files\nodejs\node.exe" "%1"%*NOTA: il %*valore NON è tra virgolette e non ha spazio tra esso e la doppia virgoletta precedente.
Michael Paulukonis,

Ho anche eliminato la chiave HKEY_CLASSES_ROOT\.ulawin regedit nel caso in cui .ulawsia l'estensione dei file per cui stavo facendo la procedura.
Matt

Possiamo passare gli argomenti (diciamo 'testing') durante l'apertura?
Apparao,

Modifica questa risposta per modificare esplicitamente "[HKLM | HKCU] \ Software \ Classes", a seconda del contesto di installazione. Non modificare direttamente HKCR. Vedere le "considerazioni importanti" per i tipi di file e l' HKEY_CLASSES_ROOTarticolo. È un malinteso comprensibile dato che gran parte della documentazione di Microsoft precede la visione unita per HKCR che è stata introdotta su Windows 2000.
Eryk Sun

10

Puoi farlo con assoce ftypeal prompt dei comandi. Aprire un prompt dei comandi con privilegi elevati e provare quanto segue:

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

Ciò assocerà l' .xyzestensione MyProgram.exee passerà la riga di comando /arg1 /arg2 [filename.xyz]al programma per eseguirla.


1
Accettato perché questa sembra essere la risposta giusta da ciò che ho studiato. Tuttavia, questo processo sembra inefficace sul sistema che sto usando. Posso usare ftype e assoc per verificare che le modifiche siano state apportate, ma non influisce sul programma utilizzato per aprire i file. Forse il processo è cambiato in Windows 7?
jtpereyda,

Usando la risposta di Marcus Pope, farlo funzionare correttamente dalla mia parte usando Windows 7. Stavo cercando di riprodurre un .ulawfile soxusando argomenti predefiniti. Si noti che oltre a eliminare la vecchia applicazione, ho anche eliminato HKEY_CLASSES_ROOT\.ulawquale stava definendo il tipo di file.
Matt

CMD assoce ftypesono comandi legacy. Non sono stati aggiornati per le estensioni alle associazioni di file aggiunte in Windows XP, 7 e 8. Modificano solo le chiavi di associazione file e ProgId sotto la chiave di sistema "HKLM \ Software \ Classes". Non leggono né modificano le impostazioni HKCU per utente, che hanno la precedenza, o le sottochiavi più recenti come "Applicazioni" e "SystemFileAssociations" o le chiavi delle capacità per applicazione da "RegisteredApplications". Inoltre, non leggono o modificano la scelta dell'utente in "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts".
Eryk Sun,

3

La persona che pone la domanda segnala che la migliore risposta in realtà non funziona.

L'ho capito per XP, che potrebbe applicarsi al sistema operativo successivo.

A un prompt cmd sono necessari due comandi: assoc, ftype.

Questi due possono mostrare ciò che è associato e quindi modificare l'associazione ma c'è una svolta, le istruzioni MS sembrano essere errate / incomplete. Sono stato avvisato di questo notando uno stile di associazione non documentato da note applicazioni veterane, perché?

Questo esempio consente di passare molti argomenti al programma associato.

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

Non è un errore di battitura "%1" "%*". La stella percentuale non funzionerà senza la precedente percentuale 1 .

E questo diventa immediatamente attivo, non è necessario disconnettersi ecc.

Fatto a destra passerà 3 a arg []

myfile.wotsit file1 file2 file3

Non l'ho fatto ma sembra che le seguenti virgolette esterne passerebbero -m se il programma necessita di un flag.

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

Non penso sia corretto. Usando le virgolette intorno a "% *", l'elenco degli argomenti verrà passato come singolo argomento. Inoltre, hai perso i due punti dopo la lettera di unità. Il comando corretto dovrebbe essere: ftype name_of_assoc = "C: \ blah \ aprog.exe" -m "% 1"% *
Utente0

Sto usando l'eccellente programma FilesTypeMan, e in questo caso hai bisogno di %1 %* virgolette !!! dannata finestre
Jean-François Fabre il

2

Ho avuto un problema simile con una versione precedente di PSP con Windows 7

Questa soluzione (cambia la shell \ open \ riga di comando nel Registro di sistema) ha funzionato MA doveva avere la sintassi "C: \ MyFolderName \ PSP.EXE"% 1 NESSUN PREVENTIVO CIRCA% 1 altrimenti questo viene interpretato come costante


1
perché i downvotes? questa risposta mi ha aiutato finalmente a ottenere il comando giusto!
ylka,

GRAZIE - Avevo le virgolette e non funzionava
Fiona - myaccessible.website

1

Non è la soluzione migliore ma la più semplice sta usando un file batch.

Crea un file bat come quello e imposta il programma predefinito su di esso per l'estensione del file. E sì, la citazione vuota dopo l'avvio è necessaria:

{nome app} .bat

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

Esempio:

BCompareEdit.bat

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

1
Questa è l'unica soluzione che ha funzionato per me su Windows 10. Mi aiuta ad avviare Word 2013 con l'opzione / w per avere una nuova istanza ad ogni avvio, necessaria per usare Word con desktop virtuali.
vicmortelmans,

0

Ecco un'estensione che sembra fare esattamente quello che vuoi. Non l'ho mai usato prima, ma sembra ottenere buone recensioni. lasciare un commento se ci sono problemi.


-1

Crea un collegamento di Windows e utilizza il seguente modello:

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

2
E come lo usa l'utente per aprire un file come xyz.jpg?
G-Man dice "Ripristina Monica" il

Ha chiesto come modificare il registro per raggiungere questo obiettivo.
lancia il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.