Parametro di destinazione del collegamento di Windows che inizia con un @


12

Ho un'applicazione Windows che devo richiamare con un collegamento sul desktop e alcuni parametri della riga di comando.

L'ho fatto migliaia di volte, ma questo è un po 'diverso. Invece di utilizzare un normale parametro della riga di comando come -e 12345o -example 12345, questo utilizza @12345(a partire dal @simbolo).

Alle scorciatoie di Windows non piace che questo parametro arrivi immediatamente dopo il nome dell'eseguibile e rimuove semplicemente tutto. Non so perché.

Per esempio:

c:\example\example.exe @12345 -e9876poiché il "target", durante il salvataggio, elimina tutti i parametri e lascia c:\example\example.execome target.

Ma c:\example\example.exe -e9876 @12345 funziona benissimo. Salva e convalida e tutto è buono.

Tuttavia ho bisogno che il @parametro sia il primo sul comando. Oltre a fare qualcosa come avvolgere il comando in un file batch e chiamare il batch, come posso avere un @simbolo come primo parametro della riga di comando su un collegamento di Windows?


1
L'altra opzione è di citare i parametri (individualmente), supponendo che detto programma lo supporti. Comportamento interessante che ho appena scoperto durante i test: i parametri sono passati dal campo Target ma vengono comunque passati al programma target! In effetti, i parametri ora invisibili vengono conservati fino a quando non si modifica nuovamente il campo e i .lnkfile sono effettivamente diversi. (Testato con l'obiettivo come file batch che fa semplicemente eco ai parametri passati.)
Bob

Risposte:


13

Chi lo sapeva? ... Apparentemente Windows tratta il @personaggio come un delimitatore. I comandi di Windows interpreteranno solo il primo elemento del comando ... quindi tronca efficacemente il resto. Apparentemente, puoi ignorare il comportamento fornendo un carattere ^prima di sfuggire al simbolo.

vale a dire

c:\example\example.exe ^@12345 -e9876


3
Hey! Funziona! Per curiosità, come hai trovato la risposta a questo?
Mark Henderson

3
Deeeep post scuri di anni fa. Qualcuno ha fatto riferimento a documenti che non esistono più (o almeno non sono facili da trovare) e ha menzionato alcuni di questi bocconcini. Ha anche menzionato cose come i personaggi $e %che possono causare altri problemi. Puoi sfuggire a quelli che usano lo stesso ^personaggio. Puoi anche sfuggire alla fuga facendo ^^come ti aspetteresti.
TheCompWiz

4
@MarkHenderson Il simbolo Caret "^" è il simbolo standard "escape the next character" utilizzato dall'intera API WIN32 (e successivamente a 64 bit) poiché (se ricordo bene) almeno NT 3.5 (sì: sto invecchiando ). Funziona praticamente in qualsiasi luogo in Windows in cui è possibile fornire una riga di comando: script / prompt CMD, casella di esecuzione Windows + R, collegamenti, nelle righe di comando associate a servizi e attività pianificate, solo per nominare un pochi.
Tonny,
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.