【バッチファイル】IF文で条件分岐をする

バッチファイルで
 ・IF文で条件分岐をする方法
を記載します!

バッチファイルでは
 ・IF~ELSE文が使用可能
です!

またバッチファイルでは
 ・IF~ ELSE IF ~ELSE文も使用可能
です!

バッチファイルのIF文の構文

バッチファイルのIF文の構文

if 条件1 (
  処理A
) else if 条件2 (
  処理B
) else (
  処理C
)

「else if」は複数記述できます。

各所に「半角スペース」が必要です。「半角スペース」が無いと動きません。
※これは「あるあるなハマりポイント」です。気を付けましょう。
※「半角スペース」が無いうんともすんとも言いません。エラーメッセージが表示されたりもしません。

各所に「半角スペース」が必要
各所に「半角スペース」が必要

なお変数へ値を設定する際は「半角スペース」は不要です。「半角スペース」があると動きません。
※これも「あるあるなハマりポイント」です。気を付けましょう。
※「半角スペース」があるとうんともすんとも言いません。エラーメッセージが表示されたりもしません。

「半角スペース」は不要
「半角スペース」は不要

・IF文は各所に「半角スペース」が必要
・変数へ値を設定する際は「半角スペース」は不要
という不整合な感じは、バッチファイルのイマイチな点だと思います。

他の多くのプログラミング言語(例えばJavaやC#)では、「半角スペース」はあっても無くても問題無く動きます。

「半角スペースがあると/無いと駄目」というのは、バッチファイルの特殊な点です。
※そのため「あるあるなハマりポイント」となっています。他のプログラミング言語と同じノリで記述してしまうとハマってしまいます。

バッチファイルのIF文の使用例

ここでは例として
 ・変数「str」の値により条件分岐
します。

@echo off

set str=hogehoge

rem 変数「str」の値により条件分岐
if %str% == hogehoge (
    echo hogehogeです。
) else if %str% == piyopiyo (
    echo piyopiyoです。
) else (
    echo それ以外です。
)

echo.
pause
exit


上記を実行すると、IF文で条件分岐できたことを確認できます。

実行結果
実行結果

IFの中では「半角のカッコ」は使用不可です(「(」と「)」は使用不可です)。
※これも「あるあるなハマりポイント」です。気を付けましょう。

例えば以下は11行目に「半角のカッコ」を使用しているため、バッチファイルを実行しても動きません。
※うんともすんとも言いません。エラーメッセージが表示されたりもしません。

@echo off

set str=hogehoge

rem 変数「str」の値により条件分岐
if %str% == hogehoge (
    echo hogehogeです。
) else if %str% == piyopiyo (
    echo piyopiyoです。
) else (
    echo (それ以外)です。
)

echo.
pause
exit


「カッコ」を使用したい場合は、「全角のカッコ」または「【】」等を使用しましょう。

参考

IF文の詳細は、公式サイトをご確認ください。

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