【发布时间】:2019-05-07 03:31:54
【问题描述】:
我正在尝试通过system() 命令执行 PowerShell 命令,但由于字符串中的空格而遇到异常,我尝试了一些方法但仍然遇到相同的异常。
代码:
system("powershell.exe -command Invoke-WebRequest http://example.com/myEXE.exe -OutFile C:\\Program Files\\myEXE.exe");
这是我得到的例外:
Invoke-WebRequest :找不到接受的位置参数 参数“文件\myEXE.exe”。 在行:1 字符:1 + 调用 WebRequest http://example.com/myEXE.exe -OutFile C:\Program File ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand【问题讨论】:
-
引用
OutFile:system("powershell.exe -command Invoke-WebRequest http://example.com/myEXE.exe -OutFile 'C:\\Program Files\\myEXE.exe'"); -
成功了,谢谢!我尝试对 system("'C:\\Program Files\\myEXE.exe'"); 做同样的事情。启动 exe 但它将“程序”和“文件”分开,知道如何使它工作吗?
-
Windows 可以使用
PROGRA~1来寻址Program Files。因此,'C:\\PROGRA~1\\myEXE.exe'应该可以工作 -
我正在尝试用 %appdata% 做同样的事情,但不能让它工作,还有类似的快捷方式吗?
-
this question 的答案为您指明了如何在 windows 下解析特殊路径(如
%appdata%)的正确方向。在 Windows 上运行其他程序(包括 powershell)的正确方法是使用CreateProcess。
标签: c++ powershell