バッチファイルで条件によって処理を変えるには if 文を使います。文字列・数値・ファイル存在・errorlevelの4つの比較パターンを解説します。
if文の基本構文
@echo off
:: 文字列比較
set OS=Windows
if "%OS%"=="Windows" (
echo Windowsです
) else (
echo Windowsではありません
)
比較パターン一覧
| パターン | 書き方 | 意味 |
|---|
| 文字列比較(等しい) | if “%A%”==”%B%” | AとBが同じ文字列 |
| 文字列比較(大文字小文字無視) | if /i “%A%”==”%B%” | 大文字小文字を区別しない |
| 否定 | if not “%A%”==”%B%” | AとBが異なる |
| 数値比較(等しい) | if %N% EQU 0 | N が 0 と等しい |
| 数値比較(より大きい) | if %N% GTR 10 | N が 10 より大きい |
| 数値比較(以下) | if %N% LEQ 100 | N が 100 以下 |
| ファイルが存在する | if exist “ファイルパス” | ファイルが存在すれば真 |
| ファイルが存在しない | if not exist “ファイルパス” | ファイルがなければ真 |
| errorlevel確認 | if errorlevel 1 | 直前のコマンドが失敗した |
数値比較の演算子まとめ
| 演算子 | 意味 |
|---|
| EQU | 等しい (Equal) |
| NEQ | 等しくない (Not Equal) |
| LSS | より小さい (Less than) |
| LEQ | 以下 (Less or Equal) |
| GTR | より大きい (Greater than) |
| GEQ | 以上 (Greater or Equal) |
ファイル存在チェックの実践例
@echo off
set TARGET=C:ackupdata.txt
if exist "%TARGET%" (
echo ファイルが存在します: %TARGET%
) else (
echo ファイルが見つかりません。処理を中断します。
pause
exit /b 1
)
まとめ
- 文字列比較は
"%A%"=="%B%" のように必ずダブルクォートで囲む - 数値比較は EQU・GTR・LSS などの演算子を使う
if exist でファイルやフォルダの存在チェックができるif /i で大文字小文字を区別しない比較になる- 次の記事ではループ処理(for文)を学ぶ
コメント