バッチファイル(.bat)を使用してWindowsでスクリプトを書く際、コマンドの実行結果に基づいて異なるアクションを実行したい場合、コマンドの終了コード(またはエラーコード)を利用します。
終了コードは、直前のコマンドの実行結果を格納しています。通常、コマンドが成功した場合は0、エラーで失敗し場合は非0の値が格納されます。
この記事では、コマンドの終了コードに基づいて処理分岐する方法を紹介します。
判定方法1:終了コードが「ある値以上」を判定
コマンドの終了コードが「ある値以上」の場合に分岐を行うには、IF ERRORLEVEL構文を使用します。
@echo off
rem commandを実行
command
rem コマンドの終了コードをチェック
IF ERRORLEVEL 1 (
echo コマンドはエラー終了しました。
) ELSE (
echo コマンドは成功しました。
)
pause
注意点
IF ERRORLEVEL <数値>は、指定した数値以上の終了コードが返されたかどうかをチェックします。そのため、複数のIF ERRORLEVELを使用して分岐させる場合は、数値が大きい順に記述してください。
判定方法2:終了コードが「ある値に等しい」を判定
コマンドの終了コードが「ある値に等しい」場合に分岐を行うには、IF %ERRORLEVEL%==<値> の構文を使用します。
@echo off
rem commandを実行
command
rem コマンドの終了コードが0かどうかをチェック
if %ERRORLEVEL% == 0 (
echo コマンドは成功しました。
) else (
echo コマンドはエラー終了しました。エラーコード: %ERRORLEVEL%
)
pause
まとめ
本記事では、コマンドの終了コードに基づいて処理分岐する方法を紹介しました。