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

时间:2013-07-15 15:47:44

标签: windows recursion batch-file rename

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

到目前为止,我有:

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

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

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

3 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:21)

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

应该适合你。将startdir替换为您的起始目录名,当您选中此功能后,请在echo之前移除ren以实际重命名。


对于downvoters:执行批处理文件与命令提示符的不同之处在于,每个%%x其中x是元变量(循环控制变量)需要减少到{{1} ,所以

%
如果从提示符执行此操作,

应该有效。请阅读有关for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt"

的说明

答案 2 :(得分:2)

约翰·史密斯(John Smith)的回答很好,而且行得通。但是要完全清楚(我必须重新阅读magoo的注释以找出正确的语法),这正是您需要做的...

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

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

对他们的回答进行投票,我只是个卑鄙的格式化者...