Двойные кавычки в двойных кавычках - это способ вставить двойные кавычки.Обновленная версия echoargs.exe показывает это немного более четко, поскольку показывает командную строку, используемую для вызова 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"
Если вы берете эту командную строку (после того, как она проанализирована PowerShell)вы получаете тот же результат в 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"
Относительно того, почему .NET или код запуска C ++ анализирует командную строку таким образом, я не совсем уверен.В этой теме MSDN она немного освещена, и если вы посмотрите на примеры в нижней части темы, вы увидите не менее странное поведение при разборе, например a\\\b d"e f"g h
дает a\\\b
, de fg
и h
.