†DOSとバッチとスクリプト†

IF文(BATCH)

作成開始日 2023.05.13
最終更新日

基本構文
IF [条件文] [条件が成立したときのコマンド]

用例1:文字列比較

IF "%st1%"=="%st2%" ECHO %st1%
用例2:条件の否定
IF NOT "%st1%"=="%st2%" ECHO %st1%
用例3:複数コマンドの実行
IF NOT "%st1%"=="%st2%" (
  ECHO %st1%
  ECHO %st2%
)
IF NOT "%st1%"=="%st2%" ( ECHO %st1% & ECHO %st2% )
  • 複数コマンドを実行するときは()でブロック化する
  • 可読性を高めるために、単一コマンドでも()で括ることを推奨
  • 「&」の前の空白は前命令のパラメータの一部になる;SETコマンド等では留意
用例4:数値比較
IF %x% EQU %y% (ECHO %x%)
  • 比較演算子には以下の6種類がある
  • 否定(同じでない)は「NOT」を付けるのではなく「NEQ」演算子を使う
  • この構文は数値だけでなく、文字列でも使用できる
  • コマンドを()で括ったのは可読性を高めるためで、必須ではない
EQU/NEQ:等しい/等しくない
GEQ/LEQ:以上/以下
GTR/LSS:超/未満

用例5:文字列比較(2)

IF /i %st1% EQU %st2% (ECHO %st1%)
  • 比較演算子は文字列に対しても使用できる
  • 文字列の大小に関しては文字コード順(辞書順)での比較
  • 「/i」を付けると大文字小文字を同一視する
ELSEについて

IF文では「ELSE」も使用可能だが、()が必須なので注意が必要。

【構文】IF [条件式] (条件が成立した時の命令) ELSE (条件が成立しなかった時の命令)
【用例】IF "%x%" == "A" (ECHO XはAである) ELSE (ECHO XはAではない)
これを、例えば以下のようにすると、正常に機能しない。
【誤用】IF "%x%" == "A" ECHO XはAである ELSE ECHO XはAではない
命令が複数あるときは少々厄介で、以下のような書式になる。
  IF "%x%"=="A" (
  ....
  ....
  ) ELSE (      ※この行がミソ、ELSEの前で改行は不可能
  ....
  ....
  )
もちろん、行末に「^」を置いて改行コードの機能を抑止すれば可能になるが。
  ) ^
  ELSE (


【DOSとバッチとスクリプト目次】 【ホーム】