【Windows】バッチ(bat)でファイル名の先頭に3桁連番を一括で追加する

Windowsのバッチ(bat)ファイルを使って、フォルダ内のファイル名の先頭に3桁連番(001_形式)を一括で追加する方法をご紹介します。
サンプルコード形式です。
少し修正してもらえれば、4桁、5桁、末尾に付けるなど応用できます。

目次

想定のフォルダ構成

これからご紹介するサンプルコードの前説です。
sampleフォルダに処理対象を入れておきます。
<バッチファイル名>.batファイルにサンプルコードを書き込み、ダブルクリックで処理を実行します。
次のフォルダ構成を想定しています。

batch_file.bat
sample
├── text_a.txt
├── text_b.txt
├── text_c.txt
├── jpg_a.jpg
├── jpg_b.jpg
└── jpg_c.jpg

sampleフォルダ下にあるすべてのファイルを対象に、ファイル名に連番を追加します。
テキストファイルでもjpgファイルでも、対象フォルダ下のすべてのファイルが対象です。

それではサンプルコードを見ていきましょう!

指定フォルダ内のすべてのファイルの先頭に3桁連番(001)

指定フォルダ下のすべてのファイルの先頭に3桁の連番を追加します。

@echo off
setlocal enabledelayedexpansion
set count=1

rem フォルダの相対パスを指定します。
set "folder_path=.\sample"

cd /d "%folder_path%"

rem ファイル名の末尾に連番を0埋めして追加し、拡張子を含めて再度ファイルをリネームします。
for %%f in (*) do (
  set "filename=%%~nf"
  set "ext=%%~xf"

  rem ファイル名の末尾に0埋めした連番を追加します。
  set "count_str=00!count!"
  set "new_name=!count_str:~-3!_!filename!!ext!"
  ren "%%f" "!new_name!"
  
  set /a count+=1
)

echo Zero-padded sequential numbers have been added to the beginning of the file names.
pause

フォルダ名を変更したい場合は、set "folder_path=.\sample"を変更します。

実行結果がこちらです。
ファイル名の先頭に0から始まる3桁の連番が追加されました。

ナンバリングは0埋めです。
二桁ナンバーになれば、「010_」、三桁なら「100_」のように表記されます。

指定フォルダ内のすべてのファイルの末尾に3桁連番(001)

今度は連番を付ける場所を末尾に変更したバージョンです。

@echo off
setlocal enabledelayedexpansion
set count=1

rem フォルダの相対パスを指定します。
set "folder_path=.\sample"

cd /d "%folder_path%"

rem ファイル名の末尾に連番を0埋めして追加し、拡張子を含めて再度ファイルをリネームします。
for %%f in (*) do (
  set "filename=%%~nf"
  set "ext=%%~xf"

  rem ファイル名の末尾に0埋めした連番を追加します。
  set "count_str=00!count!"
  set "new_name=!filename!_!count_str:~-3!!ext!"
  ren "%%f" "!new_name!"
  
  set /a count+=1
)

echo The file names have been appended with zero-padded sequential numbers.
pause

変わった部分はset "new_name=!filename!_!count_str:~-3!!ext!"ですね。
先ほどはset "new_name=!count_str:~-3!_!filename!!ext!"でした。
変数の並び順を変えるだけですね。

実行結果がこちらです。
ファイル名の末尾に_001のように3桁の連番が追加されました。

指定フォルダ内のすべてのファイルの先頭に4桁連番(0001)

先頭に連番を追加するバージョンにもどりまして、今度は桁数を増やします。
先ほどは_001のフォーマットで連番を付けていました。
今度は_0001のフォーマットで連番を付けます。

@echo off
setlocal enabledelayedexpansion
set count=1

rem フォルダの相対パスを指定します。
set "folder_path=.\sample"

cd /d "%folder_path%"

rem ファイル名の末尾に連番を0埋めして追加し、拡張子を含めて再度ファイルをリネームします。
for %%f in (*) do (
  set "filename=%%~nf"
  set "ext=%%~xf"

  rem ファイル名の末尾に0埋めした連番を追加します。
  set "count_str=000!count!"
  set "new_name=!count_str:~-4!_!filename!!ext!"
  ren "%%f" "!new_name!"
  
  set /a count+=1
)

echo Zero-padded sequential numbers have been added to the beginning of the file names.
pause

先ほどから変わった部分は
set "count_str=000!count!"set "new_name=!count_str:~-4!_!filename!!ext!"ですね。
こちらの桁数設定を変えれば、2桁にすることも5桁に増やすことも可能です。

実行結果がこちらです。
ファイルの先頭に4桁の連番が追加されました。

あとは組み合わせ応用です。
サンプルコードをとっかえひっかえして貰えれば、思ったとおりの一括連番が付けられるのではと思います。

今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次