我想在 QProcess 中运行环境脚本,然后读取环境(作为 QStringList)以在此环境中启动其他脚本。
如果我启动 env 脚本并读取环境,我总是得到一个空的 QStringList。有没有办法读出 QProcess 的环境?
我还尝试首先启动环境脚本并在同一个 QProcess 对象上启动实际脚本,但这也无济于事。
如果您能够重写在 C++ 中设置环境的脚本,您可以自己创建环境并使用
voidQProcess::setProcessEnvironment ( const QProcessEnvironment & environment )
方法设置它,如方法文档中给出的示例所示:
QProcess process;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("TMPDIR", "C:\\MyApp\\temp"); // Add an environment variable
env.insert("PATH", env.value("Path") + ";C:\\Bin");
process.setProcessEnvironment(env);
process.start("myapp");
Run Code Online (Sandbox Code Playgroud)
更新
如果你不能使用上述方法,你可以尝试像这样使用 cmd.exe;
#include <QtCore/QCoreApplication>
#include <QtCore/QProcess>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QProcess* proc = new QProcess();
proc->start("cmd.exe /c \"call env.bat && script.bat\"");
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
拥有包含此内容的 env.bat
set abc=test
Run Code Online (Sandbox Code Playgroud)
和带有此内容的 script.bat
echo %abc% > a.txt
Run Code Online (Sandbox Code Playgroud)
运行上面的内容会创建一个包含此内容的 .txt 文件
test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7877 次 |
| 最近记录: |