Le virgolette doppie raddoppiate all'interno di una stringa con virgolette doppie rappresentano un modo per inserire una virgoletta doppia. La versione aggiornata di echoargs.exe mostra questo un po 'più chiaramente come vi mostra la riga di comando utilizzato per richiamare l'exe:
PS> echoargs " ""1"" 2 3 ""4 5 6"" 7 8 9"
Arg 0 is < 1 2 3 4>
Arg 1 is <5>
Arg 2 is <6 7 8 9>
Command line:
"C:\...\Modules\Pscx\Apps\EchoArgs.exe" " "1" 2 3 "4 5 6" 7 8 9"
Se si prende questa linea di comando (dopo che è stato analizzato da PowerShell) si ottiene lo stesso risultato in CMD.exe:
CMD> EchoArgs.exe " "1" 2 3 "4 5 6" 7 8 9"
Arg 0 is < 1 2 3 4>
Arg 1 is <5>
Arg 2 is <6 7 8 9>
Command line:
C:\...\Modules\Pscx\Apps\EchoArgs.exe " "1" 2 3 "4 5 6" 7 8 9"
quanto al motivo per .NET o C++ codice di avvio analizza la riga di comando in questo modo, io non sono del tutto sicuro. Questo MSDN topic lo copre un po 'e se guardi gli esempi in fondo all'argomento, vedrai un comportamento parsing altrettanto strano ad es. a\\\b d"e f"g h
fornisce a\\\b
, de fg
e h
.
fonte
2012-01-18 06:30:43
È questo l'echoarg che si sta utilizzando? http://weblogs.asp.net/jgalloway/archive/2006/01/27/436713.aspx – ravikanth
Vedi la risposta di Keith. La scorsa settimana ho installato il "public drop" di PSCX. Penso che lo abbia aggiornato da allora. –
Buona domanda a proposito. Mostra i capricci del passaggio di argomenti di Powershell. Ma non si tratta veramente di '&' come vedi lo stesso quando chiami semplicemente echoargs. – manojlds