首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用-v从特定文件夹执行"qmake -v> 1.txt“之类的命令?

如何使用-v从特定文件夹执行"qmake -v> 1.txt“之类的命令?
EN

Stack Overflow用户
提问于 2014-05-02 20:07:46
回答 1查看 278关注 0票数 1

我有一个文件夹的路径和从那个文件夹执行的命令。这是一个任意复杂的命令。前任:qmake -v > 1.txt.

我想我需要运行一个shell (cmd.exe,因为我在Windows上),并在那里执行命令:

代码语言:javascript
复制
QProcess::startDetached("cmd.exe", QString("qmake -v > 1.txt").split(' ', 

( QString::SkipEmptyParts),“C:/文件夹/”);

但不起作用。它确实在指定的路径上启动控制台窗口(cmd.exe),但不执行命令。然后我试过:

代码语言:javascript
复制
QProcess::startDetached("cmd.exe", QStringList() << "start" << QString("qmake -v > 1.txt").split(' ', QString::SkipEmptyParts), "C:/folder/");

也没有运气。最后,我只想测试一下我是否会带着这个去任何地方:

代码语言:javascript
复制
QProcess::startDetached("qmake.exe", QString("-r -tp vc").split(' ', QString::SkipEmptyParts), "C:/folder_containing_qt_project/");

控制台窗口会出现很短的时间,但不会生成项目。

我做错了什么,我如何才能用QProcess实现我想要的(如果没有其他方法,我不介意使用WinAPI,但是非常喜欢在Linux / Mac /Windows上使用相同的代码)。

值得注意的是,在同一应用程序的另一种方法中,我对使用notepad.exe <path to a text file>执行startDetached没有问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 20:36:50

我想你是在寻找这样的方法:

void::setStandardOutputFile(const QString & fileName,OpenMode模式=截断)

你会像这样使用它:

代码语言:javascript
复制
QProcess myProcess;
myProcess.setStandardOutputFile("1.txt");
myProcess.start("qmake -v");
myProcess.waitForFinished();

您还可以将输出读入应用程序,并使用QFile将其写出来。这可能会让你走向那个方向:

QByteArray QProcess::readAllStandardOutput() 不管当前读取通道如何,该函数都以QByteArray的形式返回来自进程标准输出的所有可用数据。

因此,您可以编写类似这样的东西,但是它更复杂一些,而且可能需要内存,因此它只是为了演示目的而不需要块读写。

代码语言:javascript
复制
QProcess myProcess;
myProcess.start("qmake -v");
myProcess.waitForFinished();
QFile file("1.txt");
file.open(QIODevice::WriteOnly);
file.write(myProcess.readAllStandardOutput());
file.close();

免责声明:我故意不写错误检查来保持简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23436138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档