IF = 条件に一致したら実行する - Windowsのコマンドプロンプト(bat,cmd)
○Windows XP
条件に一致したら実行します。ELSE を併用すると、一致しない時に別のコマンドを実行する事も出来ます。
**** 書式
--------
if 条件 真の時に実行するコマンド
もしくは
if 条件 ( 真の時に実行するコマンド ) else 偽の時に実行するコマンド
--------
o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o 条件 = 書き方は、下記の通りです。
o 真の時に実行するコマンド = ELSE 以下を付ける時は、丸括弧(= 小括弧)で括ります。
o 偽の時に実行するコマンド = 条件を満たさなかった時に実行するコマンドです。
** 条件の書き方
--------
if [/i] [not] 値1 比較演算子 値2 実行するコマンド
もしくは
if [not] exist ファイル名 実行するコマンド
もしくは
if [not] defined 環境変数名 実行するコマンド
もしくは
if [not] errorlevel 比較する数字 実行するコマンド
もしくは
if [not] cmdextversion 比較する数字 実行するコマンド
--------
o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
(個別説明)
--------
if [/i] [not] 値1 比較演算子 値2 実行するコマンド
--------
o /i = これを付けると、大文字小文字を区別しません。
o not = 否定 = 後続の判定条件を逆にします。
o 比較演算子 = 次の演算子を使用出来ます。
+ == = 文字列として等しい
+ 「=」を2つ並べます。
+ == の前後は、空白が無くても大丈夫です。
+ EQU = 等しい
+ NEQ = 等しくない
+ LSS = より小さい
+ LEQ = 以下
+ GTR = より大きい
+ GEQ = 以上
o 値1 = 空白付きで渡したい時や、値が空になる時は、「"」で括ります。(例: "ミクさん" )
o 値2 = 値1と同様です。
--------
if [not] exist ファイル名 実行するコマンド
--------
o exist = ファイルが存在していたら真
o ファイル名 = 空白付きで渡したい時は、「"」で括ります。(例: "ミクさん" )
--------
if [not] defined 環境変数名 実行するコマンド
--------
o defined = その名前の環境変数が定義されていたら真
--------
if [not] errorlevel 比較する数字 実行するコマンド
--------
o errorlevel = 変数 ERRORLEVEL の値が、比較する数字「以上」なら真
+ 比較する数字と等しいか、比較する数字よりも大きい時に真になります。
+ 比較する数字に指定出来るのは、整数です。負の値も指定出来ます。
+ 詳しくは、「ERRORLEVEL = コマンドの戻り値」
--------
if [not] cmdextversion 比較する数字 実行するコマンド
--------
o cmdextversion = コマンド拡張機能のバージョン番号(= 変数 CMDEXTVERSION の値)が、比較する数字「以上」なら真
+ 比較する数字と等しいか、比較する数字よりも大きい時に真になります。
+ 比較する数字に指定出来るのは、0 以上の整数です。
+ Windows XP Service Pack 3の場合、変数 CMDEXTVERSION の値は 2 です。
+ ですので、比較する数字が「0」「1」「2」の時に真になります。
+ IF CMDEXTVERSION 構文は、コマンド拡張機能が無効の時に使用すると、文法エラーになります。
+ ですので、コマンド拡張機能が無効の中でも動かすようにしたい時は、変数「%CMDEXTVERSION%」を使います。
**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
+ 但し、IF の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
**** 使用例
--------
@echo off
if "MIKUSAN" == "MIKUSAN" echo おはようございます、ミクさん。
if "MIKUSAN" == "mikusan" ( echo ネギ ) else echo おはようございます、ミクさん。
if /i "MIKUSAN"=="mikusan" echo おはようございます、ミクさん。
--------
+ /I オプションを付けると、大文字小文字の区別をしなくなります。
+ 「==」の前後は、空白を入れても入れなくても大丈夫です。
+ 上の例の場合は、「"」で囲まなくても大丈夫です。
+ 条件内で「"」が必要になるのは、比較する値が空の時と、文字列の途中に空白を入れる時です。
+ @echo off は、コマンド内容を表示しないようにするコマンドです。
+ 不要なら、削除して下さい。
o ELSEの書き方は、「ELSE = IFで実行しない時に実行する」
o 括弧内の制限事項は、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点」
**** 機能
o 条件に一致したら実行します。ELSE節を追加する事も出来ます。
**** 確認したバージョン
o Windows XP Service Pack 3
==
関連ページ:
▼Windowsコマンド。制御文と環境変数(▼ABC順)
▼Windowsコマンド一覧(▼ABC順)
▼コマンドプロンプト画面
▼制作メモ
> ELSE = IFで実行しない時に実行する
▼FOR = 繰り返し実行する
GOTO = 指定したラベルに移動する
(2011年2月5日追加。cmdextversion が使えない場面)
(2011年1月30日変更。errorlevelと cmdextversion は「以上」で判定)