やりたいこと検索

errorlevelの値から分岐処理を行う

 

目次

 

「if」を使って分岐する

変数「errorlevel」の値を使って処理を分岐させるための一番単純な方法は、「if」コマンドを使うことです。

「errorlevel」変数だからといってそれ専用のコマンドを使うことはせず、どんな変数にも使える方法を使うということです。

以下のバッチファイル(errorlevel_if.bat)にサンプルプログラムを示します。

20,21行目がサブルーチンであり、これを4行目の「call」文で呼び出しています。サブルーチンを呼び出した後の戻り値「errorlevel」には「exit /b 777」によって「777」が格納されていますが、if文を使って「errorlevel」の値を判断しています。

以下、実行結果です。

errorlevelの値から分岐処理を行う 「errorlevel」の値によって「if」コマンドで分岐

 

先ほども述べたように、この方法は「errorlevel」以外のすべての変数について行えます。「if」コマンドについて詳しく知りたい方は、「if(条件分岐) -コマンド別解説-」を参照して下さい。

 

「if errorlevel」を使って分岐する

続いては、「errorlevel」特有の条件分岐方法です。「if errorlevel」コマンドもしくは、「if not errorlevel」コマンドを使います。

ここで、注意すべきは指定した数値以上もしくは未満となっていることです。「if」のように、「=」や「以外」ではありません。

 

以下のバッチファイル(errorlevel_if_errorlvel.bat)にサンプルプログラムを示します。

7行目と9行目の「if」条件文に注目です。「errorlevel」が「777」以上か未満かを判断しています。

以下、実行結果です。

errorlevelの値から分岐処理を行う 「errorlevel」の値によって「if [not] errorlevel」コマンドで分岐

 

サブルーチン名に「errorlevel」の値を含める

最後はサブルーチン名に「errorlevel」の値を含める方法です。

つまり、サブルーチン名に変数「errorlevel」を使ってやれば、「errorlevel」の値によって呼び出されるサブルーチンが変わり、「errorlevel」によって処理が分岐されるということです。

 

以下に、サンプルのバッチファイル(errorlevel_subroutine.bat)を示します。

7行目でサブルーチンを呼び出していますが、そのサブルーチン名の一部に「%errorlevel%」を使っているため、「errorlevel」によって呼び出されるサブルーチンが変わります。

10行目以下でサブルーチンを定義しています。ラベルの末尾(「_?」の部分)には「errorlevel」に代入されるかもしれない数字が指定されています。

以下、実行結果です。

errorlevelの値から分岐処理を行う サブルーチン名に「errorlevel」を含めることで分岐処理

いま、4行目でサブルーチンを呼び出した際、最終行で戻り値「errorlevel」に「0」が格納されるため、7行目のサブルーチン呼び出しは「subroutine_0」が呼び出されました。

この方法のメリットは何度も「if」文を書き、サブルーチンの呼び出しコマンドを書かなくていいということです。上記のバッチファイルであれば、7行目の「call :subroutine_%errorlevel%」を一つ書いておけば、あとはサブルーチンを増やしていくだけで様々な「errorlevel」に対応できます。

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


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


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

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


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


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


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


詳しくみる

関連ページ

コメントを残す