【问题标题】:Reading Echo from .cmd file output using Qt使用 Qt 从 .cmd 文件输出中读取 Echo
【发布时间】:2016-05-06 13:41:20
【问题描述】:

我正在尝试使用 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++ qt


    【解决方案1】:

    /C 切换到cmd 命令,以便cmd.exe 在执行批处理文件后终止。

    即这一行:

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

    应该是这样的:

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

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

    p.start(batName);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2019-11-25
      • 2011-08-03
      相关资源
      最近更新 更多