recursion地批量重命名文件扩展名(windows批处理)

我有很多文件在一个非常复杂的目录结构,由于不值得讨论的原因,我需要重命名所有具有“.inp”扩展名的文件,以“.TXT”扩展名。 有很多其他扩展名的文件,我不想被触及,我想recursion地至less5级。

到目前为止我有:

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

…但是这仅仅是一个层次的目录。

谁能帮忙? 提前致谢!

Solutions Collecting From Web of "recursion地批量重命名文件扩展名(windows批处理)"

 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" 

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

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

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