【发布时间】:2015-08-10 17:21:13
【问题描述】:
CreateProcess documentation 声明为了运行批处理文件,必须使用cmd.exe /C <path to bat>。事实上,它可以很好地运行批处理文件,除非脚本的路径包含空格(微软在MS14-019 vulnerability 的描述中确认了这一点)。我想知道是否可以转义批处理文件路径中的空格以使 CreateProcess 工作。添加引号没有帮助,CreateProcess 失败并出现错误:
cannot spawn "<path to batch>": No such file or directory
更新
一种解决方法是使用 cmets 中 @jac 指出的短文件名。我仍然想知道为什么用双引号将路径括起来适用于普通可执行文件但不适用于批处理文件。
【问题讨论】:
-
不幸的是我没有调用 CreateProcess 的代码,所以切换到 ShellExecuteEx 或
cmd.exe /C不是一个选项。 -
根据你的问题,你已经知道答案了。
-
你试过转换成DOS路径吗? IE。 C:\PROGRA~1 而不是 C:\PROGRAM FILES。
-
不走运,我认为逻辑必须在 Win32 层中。
标签: batch-file winapi createprocess