2016-05-06 8 views
0

Qtを使用してコマンドラインから.cmdファイルを実行しようとしています。私は.cmdファイルを起動できるようにする必要があります。そして、それが成功したかどうかを解釈できるように、行出力を読み込む必要があります。Qtを使用して.cmdファイル出力からエコーを読み取る

次のように私がテストしていマイ.cmdのファイルは次のとおりです。コマンドラインからこれを実行する

@ECHO OFF 
ECHO myBat Started. 
ECHO myBat Ended. 

は「myBatを開始。」私を与えます「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起動」、「」が続きます。だから私は正しく(私は思う)コンソールを開いている、それは完了するが、その後、私はデータの出力を取得していない。

コマンドラインの出力を読むために変更する必要はありますか?

答えて

1

コマンドに/Cを追加すると、cmd.exeがバッチファイルの実行後に終了するようになります。

すなわち、この行:

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

は次のようになります。

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

あなたも、このように、直接あなたのバッチファイルを起動することができます。

p.start(batName); 

P.S.コードがGUIスレッドで実行されている場合は、waitFor*関数を使用しないでください。代わりにシグナル/スロットを使用してください。 。 。

関連する問題