Windowsバッチで数値比較をしようとして、if %a% > 10 のように書いたのに、なぜかうまく動かない…そんな経験はありませんか?
実はDOSバッチのif文では、>や<といった不等号は比較演算子として認識されません。本記事では、不等号が効かない理由と、**正しい比較演算子(GTR / LSS / GEQ / LEQ)**の使い方を一覧付きでわかりやすく解説します。
🔍 なぜ>や<が使えないのか?
DOSバッチでは、> や < はリダイレクト記号として解釈されます。
| 記号 | 意味 |
|---|---|
| > | 標準出力をファイルへ出力 |
| < | 標準入力としてファイルを読み込み |
そのため以下のようなコードを書くと…
この>は「10 に出力をリダイレクトする」ものとして扱われ、比較として動作しません。
✅ if文に使える数値比較演算子一覧
バッチファイルで数値比較を行う場合は、以下の演算子を使用します。
| 演算子 | 意味 | 不等号で表すと |
|---|---|---|
| GTR | Greater Than | > |
| LSS | Less Than | < |
| GEQ | Greater or Equal | >= |
| LEQ | Less or Equal | <= |
| !ERROR! A6 -> Formula Error: Unexpected operator '=' | Equal | !ERROR! C6 -> Formula Error: Unexpected operator '=' |
✅ 正しい書き方例(数値比較)
⚠ NG例(ダメな書き方)
💡 文字列比較をする場合は「==」を使用
📎 不等号を「文字」として表示したい場合
^ を使ってエスケープ(無効化)することで、文字として扱えます。
✅ まとめ
| やりたいこと | 書き方 |
|---|---|
| 数値比較 | GTR / LSS / GEQ / LEQ |
| 文字列比較 | !ERROR! B3 -> Formula Error: Unexpected operator '=' |
| 不等号を文字として表示 | ^<、^> |
DOSバッチでは>や<はリダイレクト記号として解釈されるため、if文内では専用の比較演算子を使う必要があります。 比較がうまく動かないと感じたら、まず演算子を見直してみましょう!
