バッチファイル for インクリメント

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

コードは注意してご使用ください。

  • set /a を使うと算術演算ができます。
  • num+=1 で現在の値に1が足されます。 [1, 2, 3]

2. for /L での数値ループ(固定回数)

最初から決まった回数(例: 1から5まで1ずつ増やす)をループさせたい場合は、FOR /L を使うのが最も簡単です。 [1, 2]

  • 構文: FOR /L %%変数のアルファベット IN (開始値, ステップ(増分), 終了値) DO コマンド [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

コードは注意してご使用ください。

  • setlocal enabledelayedexpansion: 遅延環境変数を有効化します。
  • !count!: ループ内で更新された最新の変数値にアクセスします。 [1, 2]

もし、テキストファイルを読み込みながら行番号をインクリメントしたい場合や、別の条件でループを回したいご予定があれば、具体的なやりたい処理の内容を教えてください。サンプルコードを作成します。

未分類
楽天市場

タイトルとURLをコピーしました