ファイル名の変更

にメンテナンス済み

ファイル名の変更には rename(短縮形は ren)コマンドを使い、rename 現在の名前 新しい名前 の形式で指定します。

このページでは、1 件のファイル名変更から、ワイルドカードで拡張子をまとめて変更する方法、for ループで全ファイルの先頭に文字列を追加する方法までを、具体例つきで紹介します。バッチファイルでも同じ書き方で実行できます。

使用するコマンド

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

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

1 つ目の引数として現在のファイル名、2 つ目の引数として変更したいファイル名を指定します。フォルダ名の変更にも使えます。

rename は移動コマンドではない

rename では、新しい名前にドライブやパスを指定できません。別フォルダへ移したい場合は move を使います。

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

カレントディレクトリにある「before.txt」というファイルを「after.txt」にリネームするサンプルです。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 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 /b
名前の重複や使用中のファイル

新しい名前のファイルが既に存在する場合や、ファイルが他のアプリで開かれている場合は、「重複するファイル名か、ファイルが見つかりません。」などのエラーになり、リネームされません。

まとめてリネームを行う

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

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

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

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

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

2 つ目の引数の*には、1 つ目の引数でマッチしたファイル名がそのまま引き継がれます。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>rename disposable\*.txt *.html
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

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

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

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

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

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>for %f in (*) do rename "%f" "renamed_%f"
バッチファイルでは %%f と書く

上記はコマンドプロンプトに直接入力する場合の書き方です。バッチファイルに記述する場合は、変数を%%fのように%を 2 つ重ねて書く必要があります。

ダブルクォートは必要?

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

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

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

リネーム後のファイルが再度処理される場合がある

for %f in (*)は、リネームの実行中にもフォルダ内の一覧を読み取るため、すでにリネームしたファイルが再び処理され、「renamed_renamed_…」のような名前になることがあります。確実に 1 回ずつ処理したい場合は、先にdirで一覧を確定させるfor /f "delims=" %f in ('dir /b /a-d') do 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) 2026 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.txtをnew.txtにリネームできるものはどれでしょうか?

正しいものを 1 つ選んでください。

  1. rem old.txt new.txt
  2. ren old.txt new.txt
  3. replace old.txt new.txt
#コマンドプロンプト #バッチファイル #ファイル操作 #rename #リネーム