2009-01-14 6 views
8

Il semble que je peux échapper à des arguments de ligne de commande en utilisant des guillemets simples ou doubles:Comment faire pour échapper des arguments de ligne de commande sur Powershell?

PS C:\> echo Hello World 
Hello 
World 
PS C:\> echo 'Hello World' 
Hello World 
PS C:\> echo "Hello World" 
Hello World 

Mais il y a encore quelque chose que je ne peux pas comprendre, ce qui est quand vous voulez exécuter un fichier exécutable à partir d'un répertoire qui contient un espace dedans:

PS C:\> c:\program files\test.exe 
The term 'c:\program' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again. 
At line:1 char:11 
+ c:\program <<<< files\test.exe 
PS C:\> 'c:\program files\test.exe' 
c:\program files\test.exe 
PS C:\> "c:\program files\test.exe" 
c:\program files\test.exe 
PS C:\> 

Comment puis-je obtenir powershell pour exécuter l'exécutable ci-dessus?

Répondre

11

Utilisez ceci:

. "c:\program files\test.exe" 

En fait, une solution serait encore mieux:

Invoke-Item "c:\program files\test.exe" 

ou en utilisant l'alias:

ii "c:\program files\test.exe" 

en utilisant des moyens Invoke-Item que les fenêtres bon gestionnaire de fichiers serait utilisé. Donc, pour un exe, ça fonctionnerait. Pour un fichier .doc par exemple, il l'ouvrirait en word.

Voici l'une des lignes de commande PoSH les plus pratiques. Faites un essai:

ii . 
+0

Brillant! Merci –

17

Essayez de mettre une esperluette avant la commande. Par exemple

& 'C:\Program Files\winscp\winscp.exe' 
+0

C'est la réponse la plus correcte car elle dit simplement à l'analyseur d'interpréter le jeton suivant en mode commande, bien qu'il ressemble à une chaîne. –

Questions connexes