2009-01-14 8 views
8

Es scheint, dass ich Argumente Befehlszeile mit einfachen oder doppelten Anführungszeichen zu entkommen:Wie kann man Befehlszeilenargumente auf Powershell umgehen?

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

Aber es gibt noch etwas, das ich nicht herausfinden kann, was ist, wenn Sie eine ausführbare Datei aus einem Verzeichnis ausführen möchten, dass ein enthält Platz darin:

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:\> 

Wie bekomme ich Powershell, um die ausführbare Datei oben auszuführen?

Antwort

11

verwenden:

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

Eigentlich eine noch bessere Lösung wäre:

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

oder mit dem Alias:

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

Mit Invoke-Item bedeutet, dass das richtige Fenster Dateihandler würde verwendet werden. Also für eine exe würde es laufen. Für eine .doc-Datei zum Beispiel würde sie es in Word öffnen.

Hier ist eine der handlichsten PoSH-Befehlszeilen um. Probieren Sie es aus:

ii . 
+0

Brillant entdeckt! Danke –

17

Versuchen Sie, vor dem Befehl ein kaufmännisches Und-Zeichen zu setzen. Zum Beispiel

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

Dies ist die richtige Antwort, da es dem Parser einfach erklärt, das nächste Token im Befehlsmodus zu interpretieren, obwohl es wie eine Zeichenfolge aussieht. –

Verwandte Themen