たくさんのファイルの名前を一括で変える必要があり、『それ用のプログラムをpythonで書くか~』と思っていたところ「PowerToys の PowerRenameを使うと楽にできるよ」と教えてくれた方がいたので、それを用いてやってみました。
備忘録的な感じで使い方を説明していきます。
※ 簡潔に必要な情報だけ教えてほしい!という方へ
PowerToysはMicrosoftが提供しているユーティリティです。
私は公式レファレンスを参考にして進めました。以下に添付するのが私が参考にしたページです。
ファイル名を一括変更する方法
PowerToysをインストールする
PowerShellを起動し、以下のコマンドを実行します。
winget install Microsoft.PowerToys --source winget

インストールが完了すると、以下の画面が自動ででてくると思います。

PowerRenameを使う
先ほどの画面で、左下にあるのがPowerRenameです。
クリックすると、使い方の説明がでてきます。
以下で実際に使う方法を説明していきます。

上記にある説明に従い、名前を変更したいファイルをすべて選択します。
選択した状態でマウスを右クリックすると出てくるメニューに、「PowerRename」があると思います。そちらを選択すると、PowerRenameが起動します。
上の空欄に名前変更対象のファイル名を、下の空欄に変換後のファイル名を入力します。
ファイル名を変更する際は、正規表現を使用します。
こちらのページ で正規表現についても説明されています。
拡張子の変更
以下のように入力すると、拡張子を変更することができます。
ここではpngからjpgに変更しています。
「.」は “何かしらの1文字” を意味しており、「*」は “直前の文字の繰り返し” を意味します。
従って、「(.*).png」と記入すると、「.png」で終わるファイル全てを示すことになります。
下の欄の「$1」は、”上の欄で正規表現で記述された1つ目のかたまり” を意味します。
つまり、「(.*).png」の「(.*)」の部分のことで、これはファイル名の拡張子以外の部分です。
pngからjpgに変更するとき、最終的にほしいのは「(.*).png」という文字列です。
従って、「$1.jpg」と入力すると、pngからjpgへのファイル変更が行われます。

PowerRename起動時に選択したすべてのファイルのファイル名が一気に変更でき、非常に便利です。
少し複雑なファイル変更
次は、以下のようなファイル名変更を行っていきます。
機械学習のデータセットを想定しています。
・猫A01_00001.png → cat-A01_00001.png
・猫A01_00002.png → cat-A01_00002.png
・猫A01_00003.png → cat-A01_00003.png
︙
・猫A01_0000100.png → cat-A01_00000100.png
正規表現を用いれば、この変更も一括で行うことができます。
ファイル変更前も、変更後も存在する文字列を正規表現で記述します。
以下のように入力します。

まず上の欄について説明します。
{n}は “前の要素をn回繰り返す” こと、[0-9]は “0~9のいずれか1つ” を意味します。
「(.){3}」は “「.」を3つ繋げたもの” を意味します。
つまり、3文字のものなら何でも該当します。
ここではこの正規表現で「A01」を示しています。
「([0-9]){5}」は “数字を5つ繋げたもの” を意味します。
00001, 00002, 00003, … を示すことができます。
次に下の欄です。
拡張子の変更の際に説明したように、
下の欄の「$n」は、”上の欄で正規表現で記述されたnコ目のかたまり” を意味します。
つまり、「(.){3}」のかたまりが $1、「([0-9]){5}」のかたまりが $2 になります。
今回行いたいファイル名変更は、以下のような形です。
猫A01_00001.png → cat-A01_00001.png
「cat-」の後にくる「A01」と、「_」の後にくる「00001」の部分を正規表現で記述したので、
下の欄には「cat-$1_$2.png」と書くことになります。
他にも同じ変更を行うことができる方法があり、例えば
上の欄を「猫(.{3})(.{6}).png」
下の欄を「cat-$1$2.png」
とする方法です。
一番わかりやすいなと思う方法でやると良いと思います。
おわりに
今回はPowerToysのPowerRenameを用いてファイル名の一括変更を行いました。
PowerToysにはまだまだたくさんの機能があるみたいなので、調べて使ってみようと思います。
Windowsの操作が便利になりそうです。
でも、ファイルの一括変更は標準装備で良い気がします…。
コメント