複数のファイル名を一括で連番に変更する方法
画像生成AI、特にLoRA作成やAnimateDiffなどでファイル名を連番にする必要があります。
枚数が多くなると手入力でファイル名を変更すのは手間がかかりますよね。
今回は、複数のファイル名を一括で連番に変更する方法をいくつか紹介します。OSはWindowsを対象としています。
Pythonで変更する
以下のコードをVSCodeなどで実行すると、「001.png、002.png…」とファイル名が一括で選択されます。
コードにある directory = 'path/to/directory' を変更したファイルが入っているフォルダのパスを指定してください。
import os
# 対象のディレクトリを設定します
directory = 'path/to/directory' # ここにディレクトリのパスを入力
# ディレクトリ内の全てのPNGファイルを取得
files = [f for f in os.listdir(directory) if f.endswith('.png')]
# ファイル名を連番に変更
for i, file in enumerate(files):
# 新しいファイル名を作成(001.png、002.png、...)
new_name = f"{i+1:03}.png"
# ファイル名を変更
os.rename(os.path.join(directory, file), os.path.join(directory, new_name))
print("ファイル名の変更が完了しました。")
PowerShellで実行
例として、メモ帳を開きます。以下のスクリプトを記入し名前を付けて保存します。ファイル形式を「.txt」から「.ps1」に変更します。
# 変更するファイルのパスを設定します。
$filePath = 'path/to/directory' # ここにディレクトリのパスを入力
# 変更するファイルの拡張子を設定します。
$extension = '.png'
# 新しい連番の開始番号を設定します。
$newStartNumber = 1
# ファイルを取得し、新しい名前でリネームします。
Get-ChildItem -Path $filePath -Filter "*$extension" | Sort-Object Name | ForEach-Object {
$newFileName = '{0:D3}{1}' -f $newStartNumber, $extension
Rename-Item -Path $_.FullName -NewName $newFileName
$newStartNumber++
}
この .ps1ファイルを右クリックして「PowerShellで実行」をクリックします。
PowerRenameで実行
プログラミングがちょっと苦手な方はこちらをオススメします。PowerRenameはPowerToysというツールに含まれている機能です。
PowerToysとは
Windowsの機能をカスタマイズして、作業効率を高めるための無料のユーティリティ集です。PowerRename以外にも画像のサイズの変更、テキスト画像のコピーなど便利な機能がたくさんあります。
PowerToysをインストールするには、GitHubのダウンロードページからインストーラーをダウンロードするか、Microsoft Storeからアプリをインストールしてください。(私はMicrosoft Storeからアプリをインストールしました)
PowerToysインストール後、一括変換したいファイルを選択します。右クリックをして「PowerRename」をクリックします。
PowerRenameを主に操作するのは左側です。正規表現を使用します。
検索欄に「.*」を入力して全ファイルを指定します。
チェック欄(3つ)にチェックを入れます。
置換欄に「$100${start=1}」を入力します。
右側の「名前が変更されました」の列にファイル名が正しく変更されているか確認してください。
問題がなければ、最後に左下の「適用」をクリックします。
不具合や仕様の変更などで上手く変更されない場合もあります。その場合は適宜手入力で調整してみてください。
まとめ
複数のファイル名を一括で連番に変更する方法をいくつか紹介しました。これらの方法で作業効率が上がれば幸いです。
他にも代用できるプログラミングやツールがありましたらコメント欄で教えてくれると嬉しいです。