if コマンドは、条件分岐を行うために使用されます。このコマンドを使用することで、特定の条件が真の場合にのみコマンドを実行させることができます。
@ECHO OFF
SETLOCAL
REM 数値比較の例
SET /A num=10
IF %num% EQU 10 (
ECHO 数値は10です。
) ELSE (
ECHO 数値は10ではありません。
)
REM 文字列比較の例
SET str=Hello
IF "%str%"=="Hello" (
ECHO 文字列はHelloです。
) ELSE (
ECHO 文字列はHelloではありません。
)
REM ファイル存在確認の例
IF EXIST "example.txt" (
ECHO example.txtは存在します。
) ELSE (
ECHO example.txtは存在しません。
)
REM 複数の条件を組み合わせる例
IF %num% EQU 10 (
IF "%str%"=="Hello" (
ECHO 数値は10で、文字列はHelloです。
) ELSE (
ECHO 数値は10ですが、文字列はHelloではありません。
)
) ELSE (
ECHO 数値は10ではありません。
)
REM 終了処理
ENDLOCAL

このページではコマンドプロンプトでの if コマンドの基本的な使い方を解説します。
- ifコマンドの使い方
- 条件分岐の種類(数値比較・文字列比較・ファイル存在確認)
- elseコマンドの使い方
システムエンジニアやプログラマーであれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
参考 コマンドプロンプト入門
ifコマンドの基本
if コマンドは、条件分岐を行うために使用されます。if コマンドを使用することで、特定の条件が真の場合にのみコマンドを実行させることが可能。

基本的な構文は以下の通り。
IF [条件] [コマンド]
ポイント 条件の種類
- 数値比較
- 数値が等しい、大きい、小さいなどを比較。
- 文字列比較
- 文字列が等しいかどうかを比較。
- ファイルの存在確認
- 指定したファイルが存在するかどうかを確認。
1. 数値比較
数値比較では、2つの数値を比較します。主な演算子には EQU (等しい)、NEQ (等しくない)、LSS (より小さい)、LEQ (以下)、GTR (より大きい)、GEQ (以上) があります。
@ECHO OFF
SETLOCAL
SET /A num1=10
SET /A num2=20
IF %num1% EQU %num2% (
ECHO %num1% と %num2% は等しい
) ELSE (
ECHO %num1% と %num2% は等しくない
)
ENDLOCAL
rem 出力結果「10 と 20 は等しくない」
2. 文字列比較
文字列比較では、2つの文字列が等しいかどうかを比較。文字列を比較する場合は、変数をダブルクォーテーションで囲むのが一般的です。
@ECHO OFF
SETLOCAL
SET str1=Hello
SET str2=World
IF "%str1%"=="%str2%" (
ECHO %str1% と %str2% は等しい
) ELSE (
ECHO %str1% と %str2% は等しくない
)
ENDLOCAL
rem 出力結果「Hello と World は等しくない」
3. ファイルの存在確認
ファイルの存在確認では、指定したファイルまたはディレクトリが存在するかどうかを確認します。
@ECHO OFF
SETLOCAL
IF EXIST "example.txt" (
ECHO example.txt は存在します
) ELSE (
ECHO example.txt は存在しません
)
ENDLOCAL
rem 出力結果「example.txt は存在しません」
↑の3つサンプルコードは、コマンドプロンプトで if 文を使用する際の基本的な条件の種類と使い方を超・簡単に説明しています。

実際のスクリプトでは、これらの条件をうまく組み合わせて、より複雑な条件分岐を作成することが可能です。
else を使用した if 文の構文
if 文の基本構造は「もし(if)この条件が真(true)ならば、これを実行する」というものですが、else を追加することで、「もし条件が偽(false)ならば、代わりにこれを実行する」という分岐を作ることができます。
基本的な構文は以下の通り。
IF [条件] (
[条件が真の場合に実行するコマンド]
) ELSE (
[条件が偽の場合に実行するコマンド]
)
ここで注意が必要なのは、else の前にある閉じ括弧 ) と else は同じ行になければならないという点です。このルールを守らないと、スクリプトは正しく動作しません。

以下のサンプルコードでは、数値の比較を行い、条件に応じて異なるメッセージを出力します。
@ECHO OFF
SETLOCAL
SET /A num=10
IF %num% EQU 10 (
ECHO 数値は10です。
) ELSE (
ECHO 数値は10ではありません。
)
ENDLOCAL
rem 出力結果「数値は10です。」
↑の例では、変数 num が10と等しいかどうかをチェック。条件が真(つまり num が10の場合)ならば、「数値は10です。」と出力し、条件が偽(num が10ではない場合)ならば、「数値は10ではありません。」と出力します。
このように、else を使用することで、条件に応じて異なるアクションを取ることができます。これにより、スクリプトの柔軟性と読みやすさが向上します。また、if 文と else 文は、さらに複雑な条件分岐や繰り返し処理にも利用することができます。
if文:複数コマンドの実行
if文の条件に一致する際、1つではなく複数のコマンドを実行することも可能です。
IF [条件] (
[コマンド1]
[コマンド2]
...
) ELSE (
[別のコマンド1]
[別のコマンド2]
...
)
1つのコマンドだけ実行する場合と複数のコマンドを実行する場合の違いは、コマンドを括るための括弧()の有無です。例として、ファイルが存在する場合に2つの異なるメッセージを表示するバッチファイルは以下のようになります。
IF EXIST example.txt (
ECHO example.txt exists.
ECHO Check complete.
)

実行したいコマンドが1つの場合は、括弧は必須ではなく、明示的に括弧を使用してもエラーにはなりません。ただし、通常は括弧なしで書かれます。複数コマンドを実行したい場合にのみ()を記述すればOKです。
