Windowsバッチ if 条件分岐
- if 変数の比較 ==
- if文を複数行で記述
- 複数の条件分岐
- if 変数の大小比較 equ, neq, gtr, lss, geq, leq
- if ファイルの存在有無 exist
- if 変数の定義有無 defined
if 変数の比較 ==
if文で==を用いて変数Aと変数Bを比較して、等しい/等しくないで、処理を分岐できる。
if not文にすると、上記が逆になって、等しくない/等しいで、処理を分岐できる。
/iオプションを付けると、大文字小文字を区別しなくなる。
else以降は不要なら省略可能。
set valA=apple set valB=orange set valC=APPLE rem 比較①-1:等しい場合 if %valA% == %valB% (echo 比較①-1:真) else (echo 比較①-1:偽) rem 比較①-2:等しくない場合 if not %valA% == %valB% (echo 比較①-2:真) else (echo 比較①-2:偽) rem 比較①-3:大文字小文字を区別する/しない if %valA% == %valC% (echo 比較①-3/i無:真) else (echo 比較①-3/i無:偽) if /i %valA% == %valC% (echo 比較①-3/i有:真) else (echo 比較①-3/i有:偽)
比較①-1:偽 比較①-2:真 比較①-3/i無:偽 比較①-3/i有:真
if文を複数行で記述
if文を複数行で記述する場合は、次のようにする。括弧の位置に注意。
又は、^(キャレット)を使って、文の途中で改行する。
rem 比較①-1の別の記述 ※括弧の位置に注意 if %valA% == %valB% ( echo 比較①-1:真 ) else ( echo 比較①-1:偽 ) rem 比較①-1の別の記述 ※^(キャレット)を使用 if %valA% == %valB% (echo 比較①-1:真) ^ else (echo 比較①-1:偽)
複数の条件分岐
次のようにすると、3分岐以上の処理も記述できる。
rem 3分岐の処理 if %valA% == %valB% ( echo 第一条件が真 ) else if %valA% == %valC% ( echo 第二条件が真 ) else ( echo 2つとも偽 ) rem 3分岐の処理 ※^(キャレット)を使用 if %valA% == %valB% (echo 第一条件が真) ^ else if %valA% == %valC% (echo 第二条件が真) ^ else (echo 2つとも偽)
if 変数の大小比較 equ, neq, gtr, lss, geq, leq
if文で変数Aと変数Bを大小比較して、次のように処理を分岐できる。
主に、変数を数値と解釈できる場合に使用する。
下記では示さないが、elseも使用できる。
set /A valA=10 set /A valB=30 if %valA% equ %valB% (echo valA = valB) if %valA% neq %valB% (echo valA ≠ valB) if %valA% gtr %valB% (echo valA > valB) if %valA% lss %valB% (echo valA < valB) if %valA% geq %valB% (echo valA ≧ valB) if %valA% leq %valB% (echo valA ≦ valB)
valA ≠ valB valA < valB valA ≦ valB
if ファイルの存在有無 exist
if文でexistを用いると、ファイルが存在する/しないで、処理を分岐できる。
set fileA=file.txt if exist fileA (echo ファイルが存在する)
if 変数の定義有無 defined
if文でdefinedを用いると、変数の定義が有る/無いで、処理を分岐できる。
if defined aaa (echo 変数aaaが定義されている)