递归批量重命名文件扩展名(Windows批处理)

Rai*_*616 19 windows recursion rename batch-file

我在一个非常复杂的目录结构中有很多文件,由于不值得讨论的原因,我需要重命名扩展名为".inp"的所有文件以扩展".TXT".还有许多其他扩展名的文件,我不想被触及,我想以至少5个级别递归递归.

到目前为止,我有:

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd
Run Code Online (Sandbox Code Playgroud)

...但这仅限于一级目录.

有人可以帮忙吗?提前致谢!

小智 33

在Windows 7上,以下单行命令适用于我,将*.js中的所有文件递归重命名为*.txt:

FOR /R %x IN (*.js) DO ren "%x" *.txt
Run Code Online (Sandbox Code Playgroud)

  • 这个工作,选定的答案没有,说"%%我是不可取的".谢谢你! (3认同)

Mag*_*goo 21

for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt"
Run Code Online (Sandbox Code Playgroud)

应该适合你.替换startdir为您的起始目录名,当您检查这个工作满意时,删除echo之前ren实际重命名.


对于downvoters:执行批处理文件从该命令提示每个excuting不同%%x,其中x是metavariable(循环控制变量)需要被减小到%,因此

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt"
Run Code Online (Sandbox Code Playgroud)

如果从提示符执行此操作应该工作.请阅读有关的说明echo.


Rog*_*ill 5

约翰史密斯的回答非常好,而且很有效。但是要完全清楚(我不得不重新阅读 magoo 的笔记以找出正确的语法),这正是您需要做的......

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

COMMAND LINE:
FOR /R %x IN (*.js) DO ren "%x" *.txt
Run Code Online (Sandbox Code Playgroud)

对他们的回答投票,我只是一个卑微的格式化者......