Windowsの1つのコマンドでフォルダー内のすべてのファイルの拡張子を変更する


145

Windowsコマンドラインを使用して、何千ものファイルの拡張子をどのように変更できます*****.jpgか?


すべての拡張子を*****。jpgに変更するとはどういう意味ですか?それはjpgのすべてのファイル拡張子を意味しますか?はいの場合はrenを使用します* .jpg
Imran Rizvi 2012年

どのオペレーティングシステム?それらをどのように変更しますか?
ブライス2012年

@bryceオフコースWindowsオペレーティングシステム..
BerkerYüceer2012年

回答:


298

あなたが使うことができますrenrenameのように):

ren *.XXX *.YYY

そしてもちろん、適切な拡張子のためにXXXとYYYを切り替えます。それは変わりますから XXX YYY。すべての拡張子を変更する場合は、ワイルドカードをもう一度使用します。

ren *.* *.YYY

この作業を再帰的に行う1つの方法は、FORコマンドを使用することです。/R一致するファイルにコマンドを再帰的に適用するオプションとともに使用できます。例えば:

for /R %x in (*.txt) do ren "%x" *.renamed

現在のディレクトリから始めて、すべての.txt拡張子を.renamed再帰的に変更します。 %x一致したファイル名を保持する変数です。

また、何千ものファイルがあるので、カーソルが再び点滅し始め、それが機能していることを示すまで待つようにしてください。

注:これはcmdでのみ機能します。PowershellまたはBashでは機能しません


* .XXXはその特定の拡張子のファイルを変更します(つまり、拡張子XXXのすべてのファイルの名前を変更します)
Habib

@ keyser5053また、私はアクションに関するレポートを取得することができますが使用して...ここで作られましたかren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
BerkerYüceer2012年

そして、すべてのサブディレクトリでの再帰的な置換はどうですか?
NightElfik 2014

@NightElfikを使用する再帰的な例を追加しましたFOR
キーサー

4
これをPowerShellで機能させることはできませんでしたが、cmd.exeでは問題なく機能しました。他の人が気づくように。
hazzey

20

CMD

タイプ

ren *.* *.jpg

すべてのファイルを選択し、*(ファイルの名前)とjpgの拡張子に名前を変更します


10

名前変更の動作は、「直感的ではない」場合があります。例えば...

ren * .THM * .jpgは、THMファイルの名前を.jpgの拡張子に変更します。例:GEDC003.THMはGEDC003.jpgになります

ren * .THM * b.jpgは、THMファイルの名前を* .THMb.jpgに変更します。例:GEDC004.THMはGEDC004.THMb.jpgになります

ren * .THM * .b.jpgは、THMファイルの名前を* .b.jpgに変更します。例:GEDC005.THMはGEDC005.b.jpgになります。



7

注:Windows用ではありません

ren-1.0を使用した場合の正しい形式は次のとおりです。

"ren *.*" "#2.jpg"

から man ren

置換パターンは、ワイルドカードインデックスが埋め込まれた別のファイル名です。ワイルドカードインデックスはそれぞれ、文字#とそれに続く1〜9の数字で構成されます。一致するファイルの新しい名前では、ワイルドカードインデックスは、参照された文字列と一致した実際の文字に置き換えられます。元のファイル名のワイルドカード。

そして

シェルは通常、ワイルドカード*および?を展開することに注意してください。これは、renの場合は望ましくありません。したがって、ほとんどの場合、検索パターンを引用符で囲む必要があります。


私は#1:ren "* .csv" "#1.json"を使用する必要がありました
elmalto

1
man ren?問題はWindows /に関するものでしたcmd。それらは現在manページを提供していますか?どのような状況でren-1.0、どのようにしてそのmanページを表示できますか
underscore_d


3

これをバッチファイルで実行したい人のために、このコードは機能しています:

FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png

この例では、C:\ Users \ jonathan \ Desktop \ testディレクトリにある.jpg拡張子を持つすべてのファイルが* .pngに変更されます。


2

複数のファイル拡張子の名前を変更します。

変更したいringtone1.mp3ringtone2.mp3ringtone1.wavringtone2.wav

これを行う方法は次のとおりです。コマンドプロンプト(CMD)でdドライブにいるので、次のように使用します。

d:\>ren *.* *.wav 

これはファイル拡張子のほんの一例であり、WAV、MP3、JPG、GIF、bmp、PDF、DOC、DOCX、TXTなど、あらゆるタイプのファイル拡張子を使用できます。これは、オペレーティングシステムによって異なります。

また、何千ものファイルがあるので、カーソルが再び点滅し始め、それが機能していることを示すまで待つようにしてください。


1

私の場合、800以上のファイルで終わるディレクトリ.StoredProcedure.sqlがありました(それらはSSMSでスクリプト化されていました)。

上記の解決策は機能しませんでした。しかし、私はこれを思いつきました:

バッチプログラミングへの回答に基づく-ファイルの相対パスを取得

@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
  set B=%%f
  set B=!B:%CD%\=!
  ren "!B!" "!B:.StoredProcedure=!"
)

上記のスクリプトは.StoredProcedure、ファイル名から部分文字列を削除します。私はそれがより多くのケースをカバーし、入力を求め、全体的にもっと一般的になるように適応させることができると確信しています。


2
2つのsetコマンドを次の1 つのコマンドに置き換えますset "B=%%~nxf"。(%%~nxfあるN AMEおよびe のxの張力%%f)。%cd%再帰的に行うと、無効になる可能性があります。
ステファン

1

私はこれがとても古いことを知っていますが、私はそれに着陸しました、そして提供された答えはpowershellでは私にとってうまくいきませんでしたので、検索した後、この解決策を見つけました

PowerShellでそれを行うには

Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}

クレジットはhttp://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/に移動します


0

renamer npmパッケージを使用してファイルの名前を変更する別の方法。

以下は、ファイル拡張子の名前を変更する例です

renamer -d --path-element ext --find ts --replace js *

0

私のために働いたのはこれです(最初にフォルダに移動してください):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.