*.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
get-childItem -recurse | Where {$_.extension -eq ".html"} | rename-item -newname { $_.name -replace ".html",".php" }
これはPowerShellで機能します。 Windows 7またはVistaを使用している場合は、デフォルトでインストールする必要があります。 XPダウンロードできます こちら 。
コマンドラインで:
for /f "delims=*" %a in ('dir *.html /b /s') do ren "%a" *.php
注:*.html
その他のワイルドカード(例: d:\www\*.html
。
注2:バッチファイル内でコマンドを使用する場合は、%a
と%%a
(理由を聞かないでください)
Flexible Renamerは、いくつかの異なるタイプの名前変更検索/置換を処理する優れた小さなプログラムです。正規表現を受け入れ、一般的なパターンが事前定義されています。さらに、サブフォルダーにアイテムを含めたり、フォルダー自体を操作したりできます。また、行われるすべての変更のプレビューも表示されます。私はそれを何年も使用しており、強くお勧めします。
http://download.cnet.com/Flexible-Renamer/3000-2248_4-28799.html
Forfilesを使用して、すべてのサブフォルダー内のファイルの名前を再帰的に変更するスクリプトを作成できます。
forfiles /S /M *.html /C "cmd /c rename @file @fname.php"
総司令官:検索-パネルに送信-複数の名前変更ツール