【发布时间】:2018-06-07 08:30:41
【问题描述】:
我想使用 system()
到
1.打开cmd
2.保持打开/显示它
3.从给定路径运行“mybatchfile.bat”(包含空格)
4.将“2”作为参数传递。
这就是它的样子system("cmd.exe /k C:/Users/firstname secondname/desktop/mybatchfile.bat 2");
当我运行它时,我得到"C:/Users/firstname" 写入不正确或在我的命令提示符中找不到。
我该如何解决这个问题?我正在使用 Qt,而 Qt 使用“/”作为通用目录分隔符,就像在 URL 中使用“/”作为路径分隔符一样。所以我认为这不是问题所在。
我该如何解决这个问题?还有其他更简单的方法可以用来将参数传递给 Qt 中的批处理文件吗?任何帮助将不胜感激!
【问题讨论】:
-
看到路径中的空格似乎导致了它,您不能尝试转义一个 " 吗?像这样:
system("cmd.exe /k \"C:/Users/firstname secondname/desktop/mybatchfile.bat\" 2");它应该可以解决问题 -
不了解 Qt,但通常希望将 Windows 路径用引号括起来,尤其是当它们中有空格时
-
Qt 与它无关。如果您在命令行执行
C:/Users/firstname secondname/desktop/mybatchfile.bat 2,您将看到相同的行为,并且该问题的解决方案是相同的 - 引用路径。 -
@Ariart 谢谢你,这行得通,但现在它没有将“2”作为参数传递,有人知道我能做些什么吗?
标签: c++ qt path escaping system-calls