【问题标题】:QProcess with non-wrapped pipe symbol | in argument list带有非环绕管道符号的 QProcess |在参数列表中
【发布时间】:2014-05-05 06:39:28
【问题描述】:

尊敬的 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 的程序 - 但符号“|”被视为管道符号,windows 说: “命令 Win32 错误或找不到。” (原文。“Der Befehl "Win32" ist entweder falsch geschrieben oder konnte nicht gefunden werden.")

如果我尝试使用引号:

    arguments << [...] << "\"Debug|Win32\""

错误是: “vcbuild.exe:错误 VCBLD0006:无效的配置名称:“Debug|WIN32”。” (原版“vcbuild.exe:Fehler VCBLD0006:Ungültiger Konfigurationsname:“DEBUG|WIN32”。”) 显然,引号现在是名称的一部分,因此管道符号不再被视为管道符号,但现在配置名称是错误的。通过尝试和错误,我发现 Qt 用三个引号括起来。好像我会写:

    vcbuild.exe [...] """Debug|Win32"""

解决方法是将所有内容放入一个大字符串中,但这是我最后一个不需要的选择,因为这样我就必须自己根据引号或空格来完成所有引用的事情。

有人知道如何解决我的问题吗?提前谢谢!

【问题讨论】:

    标签: c++ windows qt pipe qprocess


    【解决方案1】:

    尝试使用^ 作为转义字符,即"Debug^|Win32"。详情请见cmd Escape Character

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多