web-dev-qa-db-ja.com

コマンドがバッチファイルで成功したかどうかを確認する

バッチファイル内でコマンドを確認する方法

start "" javaw -jar %~p0/example.jar

成功したか、エラーが発生しましたか?

If/elseステートメントを使用して、この情報をエコー出力します。

38
31415926

使用できます

if errorlevel 1 echo Unsuccessful

ある場合には。これは、適切な終了コードを返す最後のコマンドに依存します。異常な状態があったとしても、プログラムが正常に戻った場合、何か問題があるとは言えません。

32
Joey

これはおそらくstartでは機能しません。新しいウィンドウを開始しますが、質問に答えるためです:

コマンドがエラーレベルを返す場合、次の方法を確認できます。

特定のエラーレベルによる

commandhere
if %errorlevel%==131 echo do something

エラーの場合

commandhere || echo what to do if error level ISN'T 0

エラーがない場合

commandhere && echo what to do if error level IS 0

エラーレベルを返さないが出力を提供する場合は、変数でそれをキャッチし、出力によって決定することができます。

フル出力の解析による

for /f "tokens=* delims=" %%a in ('somecommand') do set output=%%a
if %output%==whateveritwouldsayinerror echo error

または、WordErrorのような出力で単一のフレーズを探すこともできます。

文字列の確認による

commandhere | find "Error" || echo There was no error!
commandhere | find "Error" && echo There was an error!

一緒に混ぜることもできます(_| with ^|forステートメントの場合)

お役に立てれば。

59

ほとんどのコマンド/プログラムは、成功すると0を返し、エラーを通知するためにerrorlevelと呼ばれる他の値を返します。

たとえば、次の方法でバッチでこれを確認できます。

call <THE_COMMAND_HERE>
if %ERRORLEVEL% == 0 goto :next
echo "Errors encountered during execution.  Exited with status: %errorlevel%"
goto :endofscript

:next
echo "Doing the next thing"

:endofscript
echo "Script complete"
9
jsears

良さこれに対する答えを見つけるのに苦労しました...ここにあります:

cd thisDoesntExist
if %errorlevel% == 0 (
  echo Oh, I guess it does
  echo Huh.
)
3
Andrew

Javawが%errorlevel%変数に書き込むかどうかはわかりませんが、そうなる可能性はあります。

echo %errorlevel%直接実行して確認した後。

それ以外に、javawの出力をファイルにパイプしてから、findを使用して結果が何であるかを確認できます。その出力を知ることなくして、私は本当にあなたを助けることはできません。

1
Gray