2013-07-15 14 views
10

非常に複雑なディレクトリ構造に多数のファイルがあり、議論の余地がない理由から、 ".inp"拡張子を持つすべてのファイルの名前を ".TXT"拡張機能。私が触れたくないその他の拡張子を持つ他のファイルが数多くあり、少なくとも5つのレベルで再帰的にやりたいと思っています。ファイル拡張子の大規模な名前を再帰的に(ウィンドウバッチ)

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd 

...しかし、これは唯一のいずれかのディレクトリレベルをダウン:

これまでのところ、私は持っています。

誰でも手助けできますか?前もって感謝します!

答えて

16
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt" 

が適しています。 startdirをあなたの開始ディレクトリ名に置き換えてください。これを確認したら、renの前にechoを削除して、実際に名前を変更してください。 downvotersについて


:バッチファイルを実行するxは、メタ変数(ループ制御変数)がそれぞれ%%x%に低減する必要があるので、

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt" 
ことでコマンドプロンプトからexcutingは異なりますこれをプロンプトから実行すると、

が動作するはずです。 echoに関する注記をお読みください。 Windows 7の、私のために以下の1行のコマンドの作品、オン

+0

すごいです!それは黒い魔法のような単純で効果的です:) – myforums

+0

@マグー...私はあなたを愛していると思います。私の人生の2日を要した問題、この素晴らしいソリューションに感謝してくれてありがとう! – Neville

20

は* .jsファイルで、再帰的に、すべてのファイルの名前を変更するに* .TXT:

FOR /R %x IN (*.js) DO ren "%x" *.txt 
+3

これはうまくいきました。選択された答えはありませんでした。 "%% i was notexpected"と言いました。ありがとう! –

+0

受け入れられた回答のコードから同じエラー "%% i was notexpected"を取得しました。あなたが開始ディレクトリにcdをしなければならないことに注意してください。 – brunettdan

+0

@SteveChamaillard:これは、選択された答えがその行がバッチファイルであると仮定しているからです。プロンプトから実行された場合は、それぞれの '%%'を '% 'に変更する必要があります。 – Magoo

関連する問題