2016-08-23 8 views
0

別のスクリプトを「起動」し、起動したプログラムの出力の最後の行だけを返さなければならない単純なバッチスクリプトを書く必要があります。私は必要なものCALLを使ってバッチスクリプト内で実行された別のコマンドの最後の行をキャッチする方法

多く(他のラインの知られていない番号)の後に「コード0で終了プログラムの開発」されています

私はそれが何かを印刷だと、起動したコマンドの「状態」をキャッチするために、これを必要としますcatch.cmdの最後の行だけをキャッチする

myprogram.cmdを実行するために私のcatch.cmdスクリプト内でCALLを使用しようとしますが、どのように操作して戻ってくるのかわかりません最後の出力行。

私が使用したのはCALL myprogram.cmd >NULLと私のcatch.cmd内のすべての出力を隠すために試してみますが、私のcatch.cmd内にすべての出力が得られますが、どのようにしてmyprogramの最終行を取得しますか? cmd?

お礼ありがとうございます

答えて

0

私は2つのファイルを作成しました。

called.bat:

@echo off 
dir c:\ 

caller.bat: "沈黙の中で" called.batを実行し、変数%lastLine%で最後の行を保存します

@echo off 
for /f "tokens=*" %%f in ('call called.bat') do set lastLine=%%f 
echo %lastLine% 

実行caller.bat。

は、だからあなたの場合にはANSERは、この行になります:あなたの提案のための

... 
for /f "tokens=*" %%f in ('call myprogram.cmd') do set lastLine=%%f 
if "%lastLine%"=="End programm with code 0" (
    ::DO SOMETHING 
) 
... 
+0

おかげで、私がより良いワークフローを整理するためにいくつかの変更を加えた、完璧に動作しています。 ちょっとした "配慮"、間違いだったのか、使用している環境によって依存するのか分かりません。私が使った "caller.bat"の場合: 'for/f" tokens = * "%% f do( 'called.bat')do( set lastLine = %% f ) 代わりに「plain」:do set lastLine = %% f – Andrea

+1

実際には、括弧をスキップすると違いはありません。 – MichaelS

関連する問題