Windowsコマンド虎の巻

if

ifは、バッチプログラム中で条件処理を行うコマンドです。

解説

ifは単独のコマンドとしてはあまり使用せず、バッチプログラムの中で使用されます。

構文

(構文)
IF [オプション] <条件式> 処理
【オプション】
オプション説明
/I大文字小文字を区別しない
(例)if "a" equ "A" ⇒ FALSE
   if /i "a" equ "A" ⇒ TRUE
/?コマンドのヘルプを表示する

<条件式>の箇所には以下のような記述ができます

条件式説明
[NOT] 文字列1==文字列2文字列1と文字列2が同じかどうか判定する
[NOT] EXIST ファイル名指定したファイルが存在するかどうか判定する
[NOT] DEFINED 環境変数名指定した環境変数が存在するかどうか判定する
[NOT] ERRORLEVEL 番号指定した番号以上のERRORLEVELかどうか判定する

どれも先頭に NOT を付けると判定結果が逆転します(TRUE⇔FALSE)


条件式には以下の表記を使用します。

【不等号など】
不等号など表記記述例と結果例
等しい(==)EQU10 equ 10 ⇒ true
等しくない(<>)NEQ10 neq 20 ⇒ true
より小さい(<)LSS10 lss 11 ⇒ true
以下(<=)LEQ10 leq 10 ⇒ true
より大きい(>)GTR11 gtr 10 ⇒ true
以上(>=)GEQ10 geq 20 ⇒ true
否定(!)NOTNOT 10 equ 10 ⇒ false
存在するかどうかEXISTSEXISTS C:¥hoge.txt

EQUは == でもOKです。

サンプル

IF~ELSEIF~ELSE サンプル

@echo off setlocal set a=200 if %a% equ 100 ( echo aは100です ) else if %a% equ 200 ( echo aは200です ) else ( echo aは100でも200でもありません ) endlocal

大文字小文字を区別せず比較する

@echo off setlocal set a=hoge if /i %a% equ HOGE ( echo aはHOGEです ) else ( echo aはHOGEではありません ) endlocal

否定のサンプル

@echo off setlocal set a=100 if not %a% equ 100 ( echo aは100ではありません ) else ( echo aは100です ) endlocal

ファイルが存在するかどうかを判定する

@echo off setlocal set a=C:¥temp¥test2.txt if exist %a% ( echo 指定したファイルが存在します ) else ( echo 指定したファイルが存在しません ) endlocal

指定した環境変数が存在するかどうかを判定する

@echo off setlocal set aa=hoge if defined aa ( echo 環境変数aaは存在します ) else ( echo 環境変数aaは存在しません ) endlocal

上記の結果は「存在する」になります。
setの行を「set aa=」にすると結果は「存在しない」になります。

備考

  • 括弧の前後には半角スペースが必要です

関連項目

  • for:ループ処理を行う
  • forfiles:条件に合致するファイルに対して処理を行う