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桁の連番が追加されました。
あとは組み合わせ応用です。
サンプルコードをとっかえひっかえして貰えれば、思ったとおりの一括連番が付けられるのではと思います。
今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!