チャポケのブログ

勉強したことをまとめておく。

Windowsバッチ if 条件分岐

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が定義されている)