web-dev-qa-db-ja.com

1つのコマンドで複数のフォルダー内の複数のファイルの名前を変更する方法

*.htmlファイルの名前を*.phpに変更したいのですが、(残念ながら)cmdプロンプトコマンドやバッチファイルでそれを行うための十分な知識がありません。

問題は、各ファイルが別々のフォルダーにあることです。私は750以上の異なるフォルダー名について話しています。私が知っているファイルにワイルドカードを使用するのは*ですが、フォルダにもワイルドカードを使用することは私にはわかりません。おそらく[コマンドプロンプト]でFORコマンドを使用する必要がありますが、困っています。

使用するフォルダー構造は次のとおりです。

親フォルダ/子フォルダ/孫フォルダ/ファイル.html

例えば:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.htmlなど。

親フォルダはすべてのファイルで同じです。子フォルダと孫フォルダはほとんどのファイルで異なります。

これらのファイルの名前を*.phpに変更した後、.htaccessで次のようにすると、永続的にリダイレクトされると思います。

RedirectMatch 301 (.*)\.html$ http://oursite.com$1.php
11
Charles

get-childItem -recurse | Where {$_.extension -eq ".html"} | rename-item -newname { $_.name -replace ".html",".php" }

これはPowerShellで機能します。 Windows 7またはVistaを使用している場合は、デフォルトでインストールする必要があります。 XPダウンロードできます こちら

14
soandos

コマンドラインで:

for /f "delims=*" %a in ('dir *.html /b /s') do ren "%a" *.php

注:*.htmlその他のワイルドカード(例: d:\www\*.html

注2:バッチファイル内でコマンドを使用する場合は、%a%%a(理由を聞かないでください)

3
ZEDA-NL

Flexible Renamerは、いくつかの異なるタイプの名前変更検索/置換を処理する優れた小さなプログラムです。正規表現を受け入れ、一般的なパターンが事前定義されています。さらに、サブフォルダーにアイテムを含めたり、フォルダー自体を操作したりできます。また、行われるすべての変更のプレビューも表示されます。私はそれを何年も使用しており、強くお勧めします。

http://download.cnet.com/Flexible-Renamer/3000-2248_4-28799.html

1
Aaron

Forfilesを使用して、すべてのサブフォルダー内のファイルの名前を再帰的に変更するスクリプトを作成できます。

forfiles /S /M *.html /C "cmd /c rename @file @fname.php"   

ソース: ファイルの名前を一括で変更するバッチスクリプト

1
Srini

総司令官:検索-パネルに送信-複数の名前変更ツール

0
Lazy Badger