使用Qt从.cmd文件输出读取Echo

Reading Echo from .cmd file output using Qt

本文关键字:输出 读取 Echo 文件 cmd Qt 使用      更新时间:2023-10-16

我正试图使用Qt从命令行运行.cmd文件。我需要能够启动.cmd文件,然后我需要读取行输出,以便能够解释它是否成功。

我正在测试的.cmd文件如下:

@ECHO OFF
ECHO myBat Started.
ECHO myBat Ended.

从命令行运行这个命令会给我一个"myBat Started",然后是"myBat Ended"

下面是我试图读取数据输出的代码。

QString batName = "/path/to/*.cmd";
QProcess p;
qDebug() << "starting command";
p.start("cmd.exe", QStringList() << batName);
if (p.waitForStarted()){
   qDebug() << "cmd started";
   p.waitForFinished();
   qDebug() << p.readAllStandardOutput();
} else {
    qDebug() << "Failed to start";
}

当我运行这个程序时,我会得到"启动命令",然后是"cmd启动",最后是"。所以我正确地打开了控制台(我想),它完成了,但之后我没有得到任何数据输出。

我需要更改什么才能读取命令行输出?

/C开关添加到cmd命令中,以便cmd.exe在执行批处理文件后终止。

即,这一行:

p.start("cmd.exe", QStringList() << batName);

应该是这样的:

p.start("cmd.exe", QStringList() << "/C" << batName);

您甚至可以直接启动批处理文件,如下所示:

p.start(batName);

附言:如果您的代码在GUI线程中执行,请不要使用waitFor*函数,而是使用信号/插槽。