if(条件分岐)の使い方【バッチファイル】

※この記事は「2021年5月9日」に更新しました。

if(条件分岐)の使い方を紹介します。

以前、コマンドプロンプトで、バッチファイル入門という記事を書きました。

バッチファイル入門

【コマンドプロンプト】バッチファイル入門

2020年3月28日

そこで簡単にどういうものかをお話しましたが、今回はもう少し詳しく解説していきます。

ifコマンドの使い方

ifコマンドの使い方

ifコマンドは、条件分岐を行うためのものです。

バッチファイルだけでなく、他のプログラミング言語でも使われる、重要な制御構造の一つです。




基本形

ifコマンドの基本形は以下の通りです。

if 条件 成立したときのコマンド

条件が成立しなかったときの処理を分ける場合は以下のようにします。

if 条件 成立したときのコマンド else 成立しなかったときのコマンド

文字列の比較演算を行う(数値)

おそらく、一番使いやすい形です。

if 文字列1 比較演算子 文字列2 成立したときのコマンド

比較演算子には以下のようなものがあります。

比較演算子 意味
equ 等しい
neq 等しくない
lss より小さい
leq 以下
gtr より大きい
geq 以上

文字列が数値の場合、数値の大小を比較してくれるようになっています。

文字列の一致または不一致を条件に判断する

文字列を比較して一致しているかしていないかを条件にする方法です。

if (not) "文字列1" == "文字列2" 成立したときのコマンド

文字列1 と 文字列2 を比較して等しければ、成立したときのコマンドが実行されます。

not を付けると等しくなければという条件になります。

errorlevel値を条件に判断する

errorlevel(エラーレベル)という変数がコマンドプロンプトでは用意されています。

バッチファイルから何かのプログラムを実行したときに、終了時に渡される、正常に終了したかどうかを示す値です。

if (not) errorlevel エラーレベルの値 成立したときのコマンド

少しややこしいのですが、エラーレベルの値以上ならばという条件になります。

例えば、choiceコマンドなどで、選択したものによって処理を分ける場合、3択なら、1,2,3 という errorlevel値が想定できます。

このとき、以下の条件で if を使ったとします。

if errorlevel 1 成立したときのコマンド

これだと、1,2,3 全てで成立することになります。

特殊な使い方なので、choiceコマンドなどを使うときは比較演算子の方がわかりやすいかもしれません。

ファイルの存在を条件に判断する

ファイルが存在するかどうかを条件にする方法です。

if (not) exist ファイル名 成立したときのコマンド

ファイルはカレントディレクトリを検索します。

not を付けると存在しなければという条件になります。

ifコマンドを使えば、複雑なバッチファイルも作成可能

ifコマンドを使う場合、単体コマンドとしてあまり使用せず、バッチファイルで使うことが多いです。

変数を条件判断に使うこともできます。

forコマンドや gotoコマンドなどと組み合わせれば、複雑な処理も可能です。

gotoコマンドを使えば、条件ジャンプを作ることもできます。

if 条件1 goto ラベル1
if 条件2 goto ラベル2
if 条件3 goto ラベル3

ただ、この書き方は少々古臭いので、マニアックになりすぎると非常に難解なコードが仕上がるかと思います。

他のプログラミング言語を使うと簡単だったということもあるので、本当にバッチファイル(コマンドプロンプト)でないとできないかどうかはジャッジしましょう。

最後に

いかがでしょうか。

他のプログラミング言語を経験した方は、わかっていただけるかと思うのですが、少しむずかしかったのではないでしょうか?

バッチファイルだと他に繰り返し処理を行う、forコマンドというものもあります。

これも他のプログラミング言語と比較するとなかなか難しいコマンドです。

今回の ifコマンドや forコマンドが使いこなせるようになれば、バッチファイルで本格的なものを簡単に作成することができます。