2009-01-14 13 views
8

Parece que puedo escapar de los argumentos de línea de comandos usando comillas simples o dobles:¿Cómo escapar de los argumentos de línea de comando en Powershell?

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

Pero todavía hay algo que no puedo entender, que es cuando se desea ejecutar un archivo ejecutable desde un directorio que contiene una espacio en él:

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

¿Cómo obtengo PowerShell para ejecutar el ejecutable arriba?

Respuesta

11

Utilice esta:

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

realidad una solución aún mejor sería:

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

o usando el alias:

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

Usando invocación del artículo significa que el propio Windows manejador de archivo sería utilizado. Entonces, para un exe lo ejecutaría. Para un archivo .doc por ejemplo, se abriría en word.

Aquí está una de las líneas de comando PoSH más prácticas. Pruébalo:

ii . 
+0

Brillant! Gracias –

17

Intenta poner un ampersand antes del comando. Por ejemplo

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

Esta es la respuesta más correcta, ya que simplemente le dice al analizador que interprete el siguiente token en el modo de comando, aunque parece una cadena. –

Cuestiones relacionadas