Hallo亲爱的stackoverflow用户,
尝试在Windows上使用QProcess运行命令时遇到问题。除了解释一个论点外,一切都很好。
我正在调用vcbuild.exe来构建visual studio 2008解决方案。电话看起来像这样:
QString program = "cmd.exe";
QStringList arguments;
arguments << getenv(VS90COMNTOOLS) + "\\vsvars32.bat"
<< "&" << "vcbuild.exe" << pathToSolution << "Debug|Win32";
QProcess::execute( program, arguments );
问题是像“Debug | Win32”这样的名称是许多解决方案的常见配置名称,我希望以编程方式调用我的程序来编写使用QProcess的程序 - 但符号“|”被视为管道符号,窗户说: “命令Win32错误或无法找到。” (orig。“Der Befehl”Win32“ist entweder falsch geschrieben oder konnte nicht gefunden werden。”)
如果我尝试使用引号:
arguments << [...] << "\"Debug|Win32\""
错误是: “vcbuild.exe:错误VCBLD0006:配置名称无效:”Debug | WIN32“。” (orig。“vcbuild.exe:Fehler VCBLD0006:UngültigerKonfigurationsname:”DEBUG | WIN32“。”) 显然,引号现在是名称的一部分,因此管道符号不再被视为管道符号,但现在配置名称是错误的。通过尝试和错误,我发现Qt用三个引号包装它。好像我会写:
vcbuild.exe [...] """Debug|Win32"""
解决方法是将所有内容放入一个大字符串中,但这将是我最后一个不需要的选择,因为我必须根据引号或空格自行完成所有引用。
有人知道如何解决我的问题的答案吗?提前谢谢!