LoginSignup
2
2

More than 5 years have passed since last update.

.bat(バッチファイル)でファイル名先頭に連番を付加する

Last updated at Posted at 2018-05-12

ソースコード

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
  )
)

使い方

  • 連番を振りたいファイル群のあるフォルダにソースファイルを置く

how_to_use_it_1.PNG

  • ソースファイルを実行する

how_to_use_it_2.PNG

for文内での変数の遅延展開について

ren %%i !num!_%%~nxi!%に変えるとどうなるか

exp_1.PNG

時系列

  1. numの値が0に設定される
  2. `for'のループが3つ全て展開される
  3. ren %%i %num%_%%~nxiren %%i 0_%%~nxiとなる
  4. 展開されたforのループが1つ実行される
  5. numが1増加する

numの値が更新される前に、全てのループの展開が終了しているのがミソで、これによってループが全てnumの初期値0によって実行されることになってしまう。だから全ファイルの先頭が0になる。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2