Windows 运行工具不工作

Windows 运行工具不工作,windows,shellexecute,Windows,Shellexecute,当我使用Windows运行工具调用带有参数的exe时,它工作正常 我在下面做了 cmd.exe/C“C:\ex\abc.exe”skk 然后我的exe被击中,我得到了skk作为一个参数。但我知道了 cmd.exe/C“C:\ex\abc.exe”“sk k”则my exe不调用。为什么? 但同样的事情在cmd行中也可以很好地工作 “C:\ex\abc.exe”“sk k”这是设计的 如果/C开关后出现两个以上的引号字符,则“行为是查看第一个字符是否为引号字符,如果是,则去掉前导字符并删除命令行上

当我使用Windows运行工具调用带有参数的exe时,它工作正常 我在下面做了 cmd.exe/C“C:\ex\abc.exe”skk 然后我的exe被击中,我得到了skk作为一个参数。但我知道了 cmd.exe/C“C:\ex\abc.exe”“sk k”则my exe不调用。为什么? 但同样的事情在cmd行中也可以很好地工作 “C:\ex\abc.exe”“sk k”

这是设计的

如果/C开关后出现两个以上的引号字符,则“行为是查看第一个字符是否为引号字符,如果是,则去掉前导字符并删除命令行上的最后一个引号字符,保留最后一个引号字符后的任何文本”,除非满足以下条件:

  • no/S开关
  • 正好两个引号字符
  • 两个引号字符之间没有特殊字符,其中特殊是以下之一:&()@^|
  • 两个引号字符之间有一个或多个空白字符
  • 两个引号字符之间的字符串是可执行文件的名称
所以,当你这么做的时候

cmd.exe /C "C:\ex\abc.exe" "sk k"
它试图执行

C:\ex\abc.exe" "sk k
这显然是行不通的。如果要使用包含空格的参数运行exe,请重试

cmd.exe /C C:\ex\abc.exe "sk k"
或者将整个命令用双引号括起来,如下所示:

cmd.exe /C ""C:\New Folder\abc.exe" "sk k""

是的,它起作用了。但是如果我的abc.exe在“新文件夹”中会发生什么?我需要执行此命令cmd.exe/C“C:\New Folder\abc.exe”“sk k”。这是行不通的。现在我需要做的是,然后将整个命令用双引号括起来(参见上面的更正答案)