[記事公開日]2025/10/06
🔀 ifコマンドの使い方|条件分岐でバッチ処理を制御する方法
もくじ
はじめに
Windowsバッチファイルにおいて、処理を条件によって分岐させるために欠かせないのが ifコマンド です。ユーザー入力や環境変数の値、コマンド実行結果に応じて処理を切り替えられるため、動的で柔軟なスクリプト作成が可能になります。
この記事では、ifコマンドの基本的な使い方から、数値・文字列比較、エラーレベル判定、存在確認、応用例まで詳しく解説します。
🛠 ifコマンドとは?
-
役割:条件を満たすかどうかを判定し、処理を分岐させる
-
用途:環境変数の値に応じた処理分岐、ユーザー入力に基づく条件分岐、エラー判定
-
特徴:シンプルながら強力で、gotoやcallと組み合わせて高度な制御が可能
📌 基本的な使い方
文字列比較
set VAR=Hello
if "%VAR%"=="Hello" echo 文字列が一致しました
-
変数
VARが「Hello」と一致した場合のみ処理を実行
数値比較
set /A X=5
if %X% LSS 10 echo Xは10未満です
-
LSSは「より小さい」を意味する比較演算子
ファイルの存在確認
if exist data.txt echo ファイルが存在します
-
指定ファイルが存在する場合に実行
否定条件
if not exist data.txt echo ファイルが見つかりません
-
存在しない場合に実行
🔍 比較演算子一覧
-
EQU: 等しい (=) -
NEQ: 等しくない (!=) -
LSS: より小さい (<) -
LEQ: 以下 (<=) -
GTR: より大きい (>) -
GEQ: 以上 (>=)
📚 応用的な使い方
エラーレベル判定
command.exe
if errorlevel 1 echo エラーが発生しました
-
直前のコマンドの終了コードを確認して分岐
入力に基づいた分岐
set /P ANSWER=処理を続行しますか? (Y/N):
if /I "%ANSWER%"=="Y" (
echo 続行します...
) else (
echo 中止しました
)
-
/Iオプションをつけると大文字・小文字を区別しない
複数条件の分岐
set /P MENU=1:バックアップ 2:復元 3:終了 >
if "%MENU%"=="1" goto backup
if "%MENU%"=="2" goto restore
goto end
:backup
echo バックアップ開始
goto end
:restore
echo 復元開始
goto end
:end
echo 完了しました
-
簡易メニューを実装するサンプル
📚 活用シーン
バッチファイルでのエラー処理
-
利用例:処理が失敗した場合にログを残す
-
効果:運用上のトラブルシューティングが容易に
ユーザー入力を利用した選択
-
利用例:選択肢を与えて処理を切り替える
-
効果:対話型のスクリプトが可能
環境依存処理
-
利用例:OSのバージョンや特定フォルダの存在によって分岐
-
効果:移植性の高いスクリプトを作成できる
⚠️ 注意点
-
文字列比較では必ず ダブルクォートで囲む のが安全
-
if errorlevelは「指定値以上」で判定される点に注意(例:if errorlevel 1は 1以上を意味する) -
複雑な条件をifだけで書くと可読性が下がるため、gotoやcallと組み合わせて整理するのが望ましい
-
括弧を使った複数行条件はインデントをそろえると読みやすい
📊 まとめ表
| コマンド | 用途 | 活用例 |
|---|---|---|
| if “%VAR%”==”Hello” | 文字列比較 | 値が一致した場合の処理 |
| if %X% LSS 10 | 数値比較 | 10未満か判定 |
| if exist file.txt | 存在確認 | ファイルの有無 |
| if errorlevel 1 | エラーレベル判定 | 異常終了の確認 |
| if /I “%ANS%”==”Y” | 大文字小文字無視 | 入力確認 |
関連記事
さいごに
「if」コマンドは、バッチ処理における条件分岐の要となる重要な構文です。文字列や数値、ファイル存在確認、エラーレベル判定などを組み合わせることで、柔軟で実用的なスクリプトが構築できます。
正しく活用することで、単純な処理を一気に高度なロジックへと進化させられます。バッチファイルを作るなら、ぜひマスターしておきたいコマンドです。
