Las comillas de dobles dobladas dentro de una secuencia de comillas dobles es una forma de insertar una comilla doble. La versión actualizada de echoargs.exe muestra esto un poco más claro, ya que le muestra la línea de comandos que se utiliza para invocar el 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"
Si se toma esa línea de comandos (después de que ha sido analizado por PowerShell) se obtiene el mismo resultado en 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"
cuanto a por qué el .NET o C++ código de inicio analiza la línea de comandos de esa manera, no estoy del todo seguro. Este MSDN topic lo cubre un poco y si observa los ejemplos al final del tema, verá un comportamiento de análisis igualmente extraño, p. a\\\b d"e f"g h
da a\\\b
, de fg
y h
.
¿Este es el ecoargs que está utilizando? http://weblogs.asp.net/jgalloway/archive/2006/01/27/436713.aspx – ravikanth
Vea la respuesta de Keith. Instalé la "publicación pública" de PSCX la semana pasada. Creo que lo ha actualizado desde entonces. –
Buena pregunta por cierto. Muestra los caprichos del argumento de Powershell pasando. Pero en realidad no se trata de '&' ya que ves lo mismo cuando llamas a echoargs. – manojlds