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コマンドの基本
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です。