23

非常に複雑なディレクトリ構造に多数のファイルがあり、議論する価値のない理由により、拡張子が「.inp」のすべてのファイルの名前を「.TXT」に変更する必要があります。触れたくない他の拡張子を持つ他のファイルが多数あり、少なくとも5レベルまで再帰的に実行したいと考えています。

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

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

...しかし、これはディレクトリの 1 レベルだけ下ります。

誰でも助けることができますか?前もって感謝します!

4

3 に答える 3

38

Windows 7 では、次の 1 行のコマンドが機能し、*.js 内のすべてのファイルの名前を再帰的に *.txt に変更します。

FOR /R %x IN (*.js) DO ren "%x" *.txt
于 2014-10-18T10:45:43.237 に答える
29
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt"

あなたのために働くはずです。開始ディレクトリ名に置き換えstartdirます。これが満足のいくものであることを確認したら、 のecho前にあるを削除してren、実際に名前を変更します。


反対票を投じる方へ: バッチ ファイルの実行は、メタ変数 (ループ制御変数) を に減らす必要がある%%xという点で、コマンド プロンプトからの実行とは異なります。x%

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

プロンプトからこれを実行すると動作するはずです。についての注意事項をお読みくださいecho

于 2013-07-15T16:07:16.953 に答える
5

ジョン・スミスの答えは素晴らしく、うまくいきます。しかし、完全に明確にするために(正しい構文を理解するためにmagooのメモを読み直さなければなりませんでした)、これがまさにあなたがしなければならないことです...

BATCH FILE:
FOR /R %%x IN (*.js) DO ren "%%x" *.txt

COMMAND LINE:
FOR /R %x IN (*.js) DO ren "%x" *.txt

彼らの回答に賛成票を投じてください、私は低フォーマターです...

于 2018-08-28T01:36:13.787 に答える