我想使用powershell一行运行带有参数的exe,就像这样-
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList somefile.txt, Run"
它可以工作,但是当我尝试插入带有空格的完整路径时,它会崩溃
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList "C:\Program Files\somefile.txt", "Run" "
我尝试使用单引号或将`进行转义,但这无济于事
也许有人知道我做错了吗?
P.s。从cmd.exe内部运行
答案 0 :(得分:0)
最简单的解决方案是对嵌入的字符串使用单引号('...'
):
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList 'C:\Program Files\somefile.txt', 'Run'"
由于是PowerShell将解释命令字符串,因此它将嵌入的'...'
字符串识别为字符串文字。
如果您尝试嵌入用双引号的字符串("..."
),则会遇到两个障碍:
首先,PowerShell的 CLI 要求\
作为"
的转义字符(而内部是`
),因此您需要将"
整个命令字符串中的"..."
转换为\"
。
另外,由于known problem with Start-Process
,您需要进行转义的额外回合,这使解决方案变得晦涩难懂,因为< strong>您必须以"
(!)的形式隐藏每个嵌入的\"`\"
。
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList \"`\"C:\Program Files\somefile.txt\"`\", \"`\"Run\"`\" "