ソースコード
numbering.bat
@echo off
@setlocal enabledelayedexpansion
set num=0
for %%i in (*) do (
rem ソースファイル自身を対象に取らないために
if not %%i==%~nx0 (
ren %%i !num!_%%~nxi
set /a num+=1
)
)
使い方
- 連番を振りたいファイル群のあるフォルダにソースファイルを置く
- ソースファイルを実行する
for文内での変数の遅延展開について
ren %%i !num!_%%~nxiで!を%に変えるとどうなるか
時系列
-
numの値が0に設定される - `for'のループが3つ全て展開される
-
ren %%i %num%_%%~nxiはren %%i 0_%%~nxiとなる - 展開された
forのループが1つ実行される -
numが1増加する
numの値が更新される前に、全てのループの展開が終了しているのがミソで、これによってループが全てnumの初期値0によって実行されることになってしまう。だから全ファイルの先頭が0になる。


