2009-01-14 76 views
8

看来,我可以使用单个或双引号逃逸的命令行参数:如何在Powershell上转义命令行参数?

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

但还是有一些我想不通,当你想从一个包含目录运行可执行文件是它的空间:

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

如何获取powershell运行上面的可执行文件?

回答

11

使用此:

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

实际上是一个更好的解决办法是:

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

或使用别名:

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

使用调用-项目是指适当的窗户文件处理程序将被使用。所以对于一个exe文件,它会运行它。例如,对于一个.doc文件,它会用文字打开它。

这是最简单的PoSH命令行之一。试试看:

ii . 
+0

马斯亮!谢谢 – 2009-01-14 15:39:45

17

请尝试在命令前加一个“&”符号。例如

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

这是更正确的答案,因为它只是告诉解析器在命令模式下解释下一个标记,尽管它看起来像一个字符串。 – 2010-11-12 16:19:14