使用包含空格的参数调用 Qprocess - Windows
Posted
技术标签:
【中文标题】使用包含空格的参数调用 Qprocess - Windows【英文标题】:calling Qprocess with arguments containing spaces - Windows 【发布时间】:2015-08-27 14:45:04 【问题描述】:我正在尝试使用qprocess
调用可执行文件并传递一些可能(并且很可能会)包含空格(不是全部)的参数。
可执行文件是与Py2exe
打包的python
脚本。 python
脚本使用 optparse
解析参数。
如果我在cmd.exe
中调用py2exe.exe
,调用是这样的:
pythonExecutable.exe -aarg_a -barg_b -c"path with spaces" -darg_d
这样的调用会成功。
我想通过使用Qprocess
的Qt
应用程序来执行此操作,但我找不到方法来执行此操作,因为Qprocess
会删除所有引号(""
),从而在出现空格的地方留下参数被破坏.
我似乎遗漏了一些东西,有人可以帮忙解决这个问题吗?
【问题讨论】:
How to execute a cmd command using QProcess?的可能重复 【参考方案1】:如果你以更正确的方式使用 QProcess,那将不是什么大问题
QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"-aarg_a"<< "-barg_b"<< "-c\"path with spaces\""<< "-darg_d";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
通常当你有带空格的参数并且不需要“符号”时
您只需在 QStringList 中传递参数
QString program = "pythonExecutable.exe";
QStringList arguments;
arguments <<"a"<< "path with spaces";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
此程序是 Qt 文档Here 中列出的示例程序的修改版本
【讨论】:
以上是关于使用包含空格的参数调用 Qprocess - Windows的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Post-Build 事件调用带有空格的参数的批处理文件