ファイル名の変更
普段パソコンを使っている中で、特定のファイルのファイル名を変更する機会はたくさんあるかと思います。
また、特定の規則に合わせてファイルをまとめて変更したいケースもあるんじゃないでしょうか。
このページでは、コマンドプロンプトを使って1件、または複数件のファイル名をワイルドカードや連番を使って変更する方法について、具体例を使って分かりやすく紹介します。
バッチファイルも同様の方法でファイル名を変更することができます。
使用するコマンド
ファイル名の変更には、rename
コマンドを使用します。
省略してren
と入力しても同様の結果を得ることができます。
1 つ目の引数として現在のファイル名、2 つ目の引数として変更したいファイル名を指定することで、ファイル名を変更することが可能です。
コマンドプロンプトから実行
マイドキュメントに保存されている「before.txt」というファイルを「after.txt」にリネームするサンプルです。
バッチファイルから実行
@echo off
setlocal
set FOLDER=%userprofile%\Documents\
rename %FOLDER%before.txt after.txt
endlocal
exit
まとめてリネームを行う
rename
コマンドでは、1 つ目、2 つ目の引数それぞれでワイルドカードの指定が可能です。
これを利用して、複数のファイルをまとめてリネームすることができます。
少し複雑なため、いくつか例を紹介します。
ワイルドカードを使ったリネーム
以下のコマンドは、「disposable」フォルダに保存されている「before.txt」の拡張子をhtml
に変更するサンプルです。
for
ループを使ったリネーム
複数のファイルの先頭に決まった文字列を追加したい場合などは、rename
コマンドだけでは解決できないため、for
ループを使って実現します。
以下のコマンドは、カレントディレクトリに保存されている全てのファイルの先頭に「renamed_」を追加するサンプルです。
フォルダは対象外となる点に注意してください。
上記のコードにおける、rename
コマンドの引数として指定している"%f"
と"renamed_%f"
は、いずれもダブルクォートなしでも実行することができます。
しかし、ファイル名にスペースが含まれている場合は、ダブルクォートを付けないと構文エラーとなりリネームは実行されません。
対象となるファイルにスペースが含まれている可能性を考慮し、ダブルクォートを付けることを推奨します。
例として、以下のようなフォルダ構成を想定します。
C:\test
│
└─disposable
sample01.txt
sample02.txt
sample03.txt
sample04.txt
C:\test\disposable
をカレントディレクトリとして、上記のコマンドを実行すると、以下のように出力されます。
フォルダ構成を確認すると、以下のようにファイル名が変更されていることが分かります。
C:\test
│
└─disposable
renamed_sample01.txt
renamed_sample02.txt
renamed_sample03.txt
renamed_sample04.txt