web-dev-qa-db-ja.com

サブフォルダー内のファイル拡張子をバッチ変更する方法

私はコマンドプロンプトを初めて使用し、1日前から使用を開始しました。

C:\Users\Administrator\Desktop\Imagesなどの場所にフォルダがあり、そのフォルダ内には約650のサブフォルダがあり、それぞれにJPGとPNGが混在する約20の画像が含まれています。すべてのサブフォルダーを調べて、各.pngファイルを.jpgファイルに変更するCMDのコマンドラインを探しています。

少し調べてみたところ、情報が見つかりましたが、なかなか理解しづらく、まだできません。ファイル名を保持したいのですが、各ファイル拡張子を.pngから.jpgに変更します。

1つのフォルダの場合、行はren *.png *.jpgのようなものであることを理解しています。ただし、これはサブフォルダーへの変更には適用されません。

9
Jai Burrell

ファイルの名前を.pngから.jpgに変更するだけで、変換しないことを正しく理解している場合は、次のバッチコードを使用できます。

@ECHO OFF
PUSHD .
FOR /R %%d IN (.) DO (
    cd "%%d"
    IF EXIST *.png (
       REN *.png *.jpg
    )
)
POPD

更新:より良い解決策を見つけました ここ コマンドラインから直接実行できます(バッチファイル内でこれを使用する場合は、%%fの代わりに%fを使用してください):

FOR /R %f IN (*.png) DO REN "%f" *.jpg

上記は現在のディレクトリとそのサブディレクトリを処理することに注意してください。必要に応じて、次のように任意のディレクトリをルートとして指定できます。

FOR /R "D:\path\to\PNGs" %f IN (*.png) DO REN "%f" *.jpg
14