Windows10 バッチファイルの作り方 if文

本日はバッチファイルの作り方の2回目として、if文を解説いたします。
if文は、どんなプログラミング言語にもある「条件分岐」と呼ばれます。
簡単に例えるなら、
・信号が赤だから、止まる
・信号が青だから、渡る
のように、条件に応じて、処理を変えることができます。
では、コマンドプロンプトで確認していきます。

if文の公式

if文の公式は、下記になります。

IF 条件式 (
   コマンド1
) ELSE (
   コマンド2
)

if文の条件式について4つのパターンをご紹介します。

if文の条件式① 文字列が等しいかどうか

文字列比較の構文です。

if (not) 文字列A==文字列B コマンド else ( コマンド)

では、コマンドプロンプトを起動し試してみます。
最初に準備として、変数todayにmondayという値を代入します。

set today=monday

では、if文です。
内容は、変数todayの値が、Fridayだったら、true そうではなかったら falseを表示するif文です。

if %today%==friday ( echo true ) else ( echo false)

では、条件式のfridayをmondayに変えると、どうなるでしょうか?
想像通りtrueが返ってきます。

if文の条件式② 文字列・数値の比較

比較する演算子は、下記があります。構文に比較演算子をあてはめます。

・構文 
if (/i) 文字列A 比較演算子 文字列B コマンド
※/i は文字列比較の際に、大文字小文字を区別しない
・比較演算子
equ 等しい

neq 等しくない
gtr より大きい
geq 以上
leq 以下
lss より小さい(=未満)

実際に試してみます。まずは、文字列比較から行います。
文字列aaa と文字列aaaは等しいか?等しいならtrue 違うならfalseです。
当然trueが返ってきます。

if /i aaa equ aaa ( echo true ) else ( echo false)

では、次に数値の比較を行います。
数値1は数値0とより大きいか?大きいならtrue 小さいならfalseです
trueが返ってきます。

if 1 gtr 0 ( echo true ) else ( echo false)

if文の条件式③ エラーレベル errorlevel

続いて、エラーレベルについて解説します。
エラーレベルとは、直前に実行したコマンドの結果を数値で表します。
正常にコマンドが終了した場合は0が返ってきます。リターンコードという言い方も一般的です。
下記はdirコマンドを実行して、正常にコマンドが終了したので、リターンコードが0です。

下記は、aaa.logがあるかdirコマンド実行し、調べた結果ファイルがなかったので
エラーコード1が返ってきます。

if文は下記のように使います。
直前のコマンドが正常だったらtrue 異常だったらfalseです。

if %errorlevel% lss 1 ( echo true ) else ( echo false )

if文の条件式④ ファイルの存在の有無

続いて、ファイルの存在の有無によって、コマンドを使い分ける構文です。

if (not) exist ファイル名 コマンド

aaaa.logというファイルがあれば、trueを返し、
aaaa.logというファイルがなければ、falseを返します。

if exist aaaa.txt (echo true) else (echo false)

まとめ

if文について紹介させていただきました。
if文は、for文と並び使用頻度が高いです。
コマンドプロンプトで気軽に練習できるので、どんどん試してみましょう!

タイトルとURLをコピーしました