Impossible d'analyser les marques vocales "" dans PowerShell à l'aide de RunProgramSalut, j'ai des problèmes avec l'exécution de powershell, par exemple:
cmd = EvalInsert(
"\[$imageFile = "test"]\");
rp1 = RunProgram(Executable("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" ),
Options(Eval(cmd)),
ReadFunction("text")
);La cmd réelle que je veux utiliser est plus complexe mais a le même problème avec les speechmarks. L'impression de rp1 dans le log donne :
"test : The term 'test' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:14
+ $imageFile = test
+ ~~~~
+ CategoryInfo : ObjectNotFound: (test:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
" Ce qui implique que la ligne a été exécutée sans annotations.
Comment puis-je m'assurer que les dictées sont exécutées correctement ?
Merci d'avance pour toute aide à ce sujet.
Re : Impossible d'analyser les guillemets « » dans PowerShell à l'aide de RunProgramJe viens de tomber sur une excellente explication de la ligne de commande Windows, des guillemets, de l'échappement et pourquoi cela semble si difficile.
http://www.windowsinspired.com/the-correct-way-to-quote-command-line-arguments/
http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/
http://www.windowsinspired.com/how-a-windows-programs-splits-its-command-line-into-individual-arguments/
Simplification excessive : plusieurs arguments sur une ligne de commande sont séparés par des espaces. Chaque guillemet permet de changer l'utilisation ou non d'espaces pour séparer les arguments. \\ est un littéral \ et \" est un littéral ". Deux guillemets adjacents lorsque les espaces sont désactivés donnent un littéral ", mais les espaces peuvent être activés ou désactivés selon la variante d'analyse utilisée.
mise à jour 20jan2025 : les liens sont obsolètes, versions d'archives Web :
http://web.archive.org/web/20220629215303/http://windowsinspired.com/the-correct-way-to-quote-command-line-arguments/
https://web.archive.org/web/20220629212707/https://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/
https://web.archive.org/web/20220629212422/https://www.windowsinspired.com/how-a-windows-programs-splits-its-command-line-into-individual-arguments/
Re : Impossible d'analyser les marques vocales "" dans PowerShell à l'aide de RunProgramL'argument de la ligne de commande nécessite des guillemets supplémentaires et un échappement pour que l'analyse de la ligne de commande PowerShell fonctionne. (C'est la deuxième fois que j'utilise powershell, j'oublie peut-être quelque chose...) (En outre, cette coloration de la syntaxe de la page Web est erronée pour le crochet citant l'échappement.)
command = "\["$imagefile = \"test\";echo $imagefile"]\";
Write( "\!nthe command is:", command ); // write shows it in the log without extra escapes
result = RunProgram(
executable( "powershell.exe" ), //
options( command ), //
readfunction( "text" )//
);
Show( result );
la commande est :"$imagefile = \"test\";echo $imagefile"
résultat = "test
" ;
Voici une capture d'écran de deux essais que j'ai effectués dans une fenêtre CMD.
powershell output in a CMD windowpowershell output in a CMD windowpowershell output in a CMD windowsortie powershell dans une fenêtre CMD
Les guillemets extérieurs font que powershell ne voit qu'une seule option ; les guillemets extérieurs sont supprimés par CMD avant que powershell n'obtienne le texte. Dans votre exemple d'origine, il y avait trois éléments powershell reçus ($imagefile, =, test ) et les guillemets extérieurs autour de test ont été supprimés par CMD. Les guillemets extérieurs sont nécessaires lorsqu'il y a des guillemets ou des espaces dans les arguments.