Windowsのバッチファイル(.bat)でインクリメント(数値を1ずつ増やす)を行うには、基本の算術演算(set /a)と、for文やif文の中で使う場合の遅延環境変数の利用がポイントになります。 [1, 2]
1. 基本的なインクリメントの方法
変数に1を加算するには、set /a コマンドと += 演算子を使います。 [1]
batch
@echo off
set num=0
set /a num+=1
echo %num%
pause
コードは注意してご使用ください。
2. for /L での数値ループ(固定回数)
最初から決まった回数(例: 1から5まで1ずつ増やす)をループさせたい場合は、FOR /L を使うのが最も簡単です。 [1, 2]
batch
@echo off
for /l %%i in (1, 1, 5) do (
echo 現在の数値: %%i
)
pause
コードは注意してご使用ください。
3. for文やif文の中で独自に変数をインクリメントする場合の注意点
for文やif文のブロック内で %num% と記述すると、ループが回る前に最初の値で評価されてしまうというバッチファイルの仕様上の問題(遅延評価の問題)が発生します。 [1, 2]
これを防ぐには、setlocal enabledelayedexpansion を宣言し、変数を %num% ではなく !num! で囲みます。 [1, 2]
batch
@echo off
setlocal enabledelayedexpansion
set count=0
for /l %%i in (1, 1, 5) do (
set /a count+=1
echo カウント: !count!
)
endlocal
pause
コードは注意してご使用ください。
もし、テキストファイルを読み込みながら行番号をインクリメントしたい場合や、別の条件でループを回したいご予定があれば、具体的なやりたい処理の内容を教えてください。サンプルコードを作成します。

