你好亲爱的stackoverflow用户,
尝试在Windows上使用QProcess运行命令时遇到问题。 除了解释一个论点之外,一切正常。
我正在调用vcbuild.exe来构build一个visual studio 2008解决scheme。 这个调用看起来像这样:
QString program = "cmd.exe"; QStringList arguments; arguments << getenv(VS90COMNTOOLS) + "\\vsvars32.bat" << "&" << "vcbuild.exe" << pathToSolution << "Debug|Win32"; QProcess::execute( program, arguments );
问题是,像“Debug | Win32”这样的名称是许多解决scheme的通用configuration名称,我想要通过编程方式调用我的程序使用QProcess – 但符号“|” 被视为一个pipe道符号和窗户说:“命令Win32是错误的或找不到。 (原文“Der Befehl”Win32“ist entweder falsch geschrieben oder konnte nicht gefunden werden。”)
如果我尝试使用引号:
arguments << [...] << "\"Debug|Win32\""
错误是:“vcbuild.exe:错误VCBLD0006:无效的configuration名称:”Debug | WIN32“。” (orig。“vcbuild.exe:Fehler VCBLD0006:UngültigerKonfigurationsname:”DEBUG | WIN32“。”)显然,引号现在是名称的一部分,使得pipe道符号不再被视为pipe道符号,而现在configuration名称是错误的。 通过尝试和错误,我发现Qt包装了三个引号。 这就好像我会写:
vcbuild.exe [...] """Debug|Win32"""
解决方法是将所有内容放入一个大string中,但是这将是我最后一个不想要的select,因为这样我就不得不根据引号或空格自己做所有的引用。
有人知道答案如何解决我的问题? 先谢谢你!
尝试使用^
作为转义字符,即"Debug^|Win32"
。 有关详细信息,请参阅cmd Escape Character 。