やりたいこと検索

コマンドエラーで終了した場合プログラムを中止する

目次

その他の関連しそうな記事

 

「errorlevel」を参照する

バッチファイル内でコマンドエラーが発生した場合、プログラムを中止する方法を解説します。

コマンドエラーが起きたかどうかは、調べたいコマンドの後で変数「errorlevel」を参照すれば確認することができます

以下、簡単な確認用のバッチファイル(errorlevel_after_command.bat)と実行結果です。

4行目では、正しいコマンドを入力しています。5行目で正常に実行されたコマンドに後に変数「errorlevel」の中身をチェックします。10行目と15行目でも同様に「errorlevel」の中身を確認していますが、こちらは直前のコマンドが正しくなく、異常終了した後の「errorlevel」となっています。

以下、このバッチファイルの実行結果です。

エラーで終了した場合プログラムを中止する コマンド実行後の「errorlevel」の値

コマンドが成功していれば「0」、エラーで以上終了していれば「0以外」が入っています。この当たりの話を詳しく知りたい方は、「errorlevel(終了コードを取得する) -コマンド別解説-」で詳しい解説を行っていますのでそちらを参考にして下さい。

したがって、コマンドエラーが生じた場合にバッチファイルを終了したい場合は、「errorlevel」の値が「0」以外ならバッチプログラムの終了コード「exit /b」を実行すればよいでしょう。次節からその例を紹介します。

 

「if」を使用して中止する

まずは、「if」コマンドを使ってコマンドエラーの場合に終了する方法です。

「if」で「neq」演算子を使って、「errorlevel」の値が「0」以外ならバッチプログラムを止めればよいでしょう。

 

以下にサンプルプログラム(stop_p_if.bat)を示します。

4行目でワザとエラーを起こすコマンドを実行しています。これで、「errorlevel」には「1」が代入されました。

そして、7行目の「if」コマンドで「errorlevel」が「0」以外の場合に( )の中に入るようにし、「exit /b」でプログラムを中止しています。

 

以下、実行結果です。

エラーで終了した場合プログラムを中止する 「if」コマンドを使った中止の方法

 

「if errorlevel」を使用して中止する

続いて、「if errorlevel」を使用する方法です。

基本的な方針は、前節の「if」を使用した場合と同様で、「errorlevel」の値が「0」以外ならバッチプログラムを止めます。

を使って、[数字]に指定した値より「errorlevel」が大きいときは[ラベル]に飛びます。飛んだ先で、プログラムを終了させます。「if errorlevel」コマンドに関しては、「errorlevelの値から分岐処理を行う -やりたいことから検索-」をご覧下さい。

以下に、サンプルプログラム(stop_p_if_errorlevel.bat)を示します。

7行目の「if errorlevel 1」で「errorlevel」が1以上の場合にサブルーチン「:stop」へ飛んでいます。

その中で、エラーメッセージを出力し、最後に「exit」コマンドでバッチファイルを終了しています。

ここで、「exit」に「/b」オプションを付けていないことに注意して下さい。「exit /b」はサブルーチンを終了して、メインプログラムに戻りますが、「exit」はそこでプログラムを終了させます。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す