ファイル名の変更

にメンテナンス済み

普段パソコンを使っている中で、特定のファイルのファイル名を変更する機会はたくさんあるかと思います。

また、特定の規則に合わせてファイルをまとめて変更したいケースもあるんじゃないでしょうか。

このページでは、コマンドプロンプトを使って1件、または複数件のファイル名をワイルドカードや連番を使って変更する方法について、具体例を使って分かりやすく紹介します。

バッチファイルも同様の方法でファイル名を変更することができます。

使用するコマンド

ファイル名の変更には、renameコマンドを使用します。

省略してrenと入力しても同様の結果を得ることができます。

1 つ目の引数として現在のファイル名、2 つ目の引数として変更したいファイル名を指定することで、ファイル名を変更することが可能です。

コマンドプロンプトから実行

マイドキュメントに保存されている「before.txt」というファイルを「after.txt」にリネームするサンプルです。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>rename before.txt after.txt

バッチファイルから実行

rename.cmd
@echo off
setlocal

set FOLDER=%userprofile%\Documents\

rename %FOLDER%before.txt after.txt

endlocal
exit

まとめてリネームを行う

renameコマンドでは、1 つ目、2 つ目の引数それぞれでワイルドカードの指定が可能です。

これを利用して、複数のファイルをまとめてリネームすることができます。

少し複雑なため、いくつか例を紹介します。

ワイルドカードを使ったリネーム

以下のコマンドは、「disposable」フォルダに保存されている「before.txt」の拡張子をhtmlに変更するサンプルです。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>rename disposable\before.txt *.html

forループを使ったリネーム

複数のファイルの先頭に決まった文字列を追加したい場合などは、renameコマンドだけでは解決できないため、forループを使って実現します。

以下のコマンドは、カレントディレクトリに保存されている全てのファイルの先頭に「renamed_」を追加するサンプルです。

フォルダは対象外となる点に注意してください。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>for %f in (*) do rename "%f" "renamed_%f"
ダブルクォートは必要?

上記のコードにおける、renameコマンドの引数として指定している"%f""renamed_%f"は、いずれもダブルクォートなしでも実行することができます。

しかし、ファイル名にスペースが含まれている場合は、ダブルクォートを付けないと構文エラーとなりリネームは実行されません。

対象となるファイルにスペースが含まれている可能性を考慮し、ダブルクォートを付けることを推奨します。

例として、以下のようなフォルダ構成を想定します。

フォルダ構成
C:\test

└─disposable
        sample01.txt
        sample02.txt
        sample03.txt
        sample04.txt

C:\test\disposableをカレントディレクトリとして、上記のコマンドを実行すると、以下のように出力されます。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\test\disposable>for %f in (*) do rename "%f" "renamed_%f"
C:\test\disposable>rename sample01.txt renamed_sample01.txt
C:\test\disposable>rename sample02.txt renamed_sample02.txt
C:\test\disposable>rename sample03.txt renamed_sample03.txt
C:\test\disposable>rename sample04.txt renamed_sample04.txt
C:\test\disposable>

フォルダ構成を確認すると、以下のようにファイル名が変更されていることが分かります。

リネーム後のフォルダ構成
C:\test

└─disposable
        renamed_sample01.txt
        renamed_sample02.txt
        renamed_sample03.txt
        renamed_sample04.txt

練習問題

練習問題

以下のコマンドのうち、実行することでold.txtnew.txtにリネームできるものはどれでしょうか?

#PowerShell #コマンドプロンプト #バッチファイル