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


11

*.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

回答:


14

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

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


ソアンドス、シャポー!!!!!!!!!!!! この面から多くの感謝、魅力のように動作します。
チャールズ

@Charles、これで問題が解決した場合は、チェックマークをクリックしてください。そうすれば、他の誰もがそれが機能していることがわかります。SuperUserへようこそ。
-soandos

3

コマンドラインで:

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

注:など*.html、他のワイルドカードに置き換えることができd:\www\*.htmlます。

注2:バッチファイル内のコマンドを使用している場合は、交換する%a%%a(なぜ私に聞かないでください)


なんで言うの"delims=*"?  "delims="良い十分なはずです(つまり、なぜあなたはの区切り文字を指定します*
G-マンが「回復モニカ言う

1

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

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



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.