CreateProcess documentation表示为了运行批处理文件,必须使用cmd.exe /C <path to bat>
。实际上它可以运行批处理文件,除非脚本的路径包含空格(Microsoft在MS14-019 vulnerability的描述中确认了这一点)。我想知道是否有可能在批处理文件的路径中转义空格以使CreateProcess工作。添加引号没有帮助,CreateProcess失败并显示错误:
cannot spawn "<path to batch>": No such file or directory
更新
解决方法是在注释中使用@jac指向的短文件名。我仍然想知道为什么用双引号括起一个路径适用于普通的可执行文件但不适用于批处理文件。
答案 0 :(得分:0)
CreateProcess没有转义字符。
由于代码被破坏而您无法修复,因此您必须解决此问题。例如,创建到目标目录的联结点并通过联结点路径启动批处理文件,或使用jac建议的短路径。 (请注意,并非所有卷都必须启用短路径,但如果您正在处理系统卷,则可以安全地假设它们将是。)