2020年6月26日金曜日

batファイルを使って一度に複数ファイルのリネームを行う方法
(自分用メモ)

ディレクトリ内のファイル名を取得する処理
まず1つ目の処理は、batファイルと同じ
ディレクトリにあるファイル名の一覧を
テキストファイルとして出力します。
batファイルの作り方は以下の通りです。

●テキストファイルを新規作成。
●作成したファイルに以下のように記述。

 for %%i in (*.*) do ( echo %%i >> FileList.txt )

●テキストファイルを保存し、拡張子を.batに変更。

これを実行すると、同じフォルダにあるファイルの名前が
すべて記載されたFileList.txtが生成されます。
ここで使われている命令は、下記の通りです。
for %%i in (*.*) do ( 【処理】 ) フォルダ内のファイル一覧を取得し、
【処理】で指定した処理を各ファイルに適用
echo %%i >> FileList.txt ファイル名をFileList.txtに追記


ファイル名を変更する処理
2つ目の処理は、ファイル名を変更する処理です。
batの作り方は以下の通りです。

●テキストファイルを新規作成。
●作成したファイルに以下のように記述。

ren test1.txt TEST.txt

●テキストファイルを保存し、拡張子を.batに変更。


このbatを実行すると、
batファイルと同じフォルダにある、
「test.txt」が「TEST.txt」にリネームされます。
ここで使っている命令は、下記の通りです。

ren (対象ファイル名) (変更後名) [対象ファイル名]という名前のファイルを
[変更後名]へリネームします


複数ファイルを一度にリネームする
最後に、先ほどの2つの処理を組み合わせて
一度に複数ファイルをリネームしてみます。
手順は次の通りです。


①1つ目で作成したディレクトリ内のファイル名を取得する処理のbatを使い、
ファイル名を変更したい複数のファイル名をテキストファイルに出力

②出力されたファイル名の一覧をコピーして、Excelに貼り付け
③貼り付けた1つ右のセルにリネームする名前を入力
④貼り付けた1つ左のセルにrenと記述する。


⑤テキストファイルを新規作成

⑥Excelに記述した3列をコピーして、⑤で
新規作成したテキストファイルに貼り付け。
⑦テキストファイルを保存し、拡張子を.batに変更。


これで、ディレクトリ内に入ったファイルを
纏めてリネームするbatが作成できました!


※1 ファイル名にスペースが入っている時は、
ファイル名を「"」で囲む。
そうしないとスペースが入っているファイル名だけ
リネームの命令が無視されます!

【例】
ren    test001.jpg    "test 001.jpg"
ren    "test 002.jpg"    test001.jpg
ren    "test003.jpg"    "test 003.jpg"
ren    "test 004.jpg"    "test004.jpg"
ren    "test005.jpg"    "test005.jpg"
ren    "test 006.jpg"    "test 006.jpg"

変更前のファイル名にスペースがあれば、変更前のみに。
変更後のファイル名にスペースを入れたければ変更後のみに。
面倒ならどちらも 「"」で囲っても問題無いです。(例3~6行目)


※2 ファイル名に日本語が入っている時は、 
batファイルの文字コードをANSIで保存する。
こちらも文字コードを変更しないと日本語ファイル名だけ
リネームの命令が無視されます!



ディレクトリ内のファイル名を取得する処理が出来ない場合
この方法は、WIndows Vista以降で使えます(多分)。 
①Windowsエクスプローラーで、ファイル名を取得したいフォルダーに移動します。
②ファイル名を取得したいファイルを選択します。
③Shiftを押しながら右クリックして、「パスのコピー」を選択します。


④ExcelやWordなどにペーストします。


⑤後は不要な文字を置換すればファイル名だけになります。