我在一个非常复杂的目录结构中有许多文件,出于不值得讨论的原因,我需要将所有扩展名为“.inp”的文件重命名为具有“.TXT”扩展名。还有许多其他扩展名的文件我不想被触及,我想递归地至少向下执行 5 个级别。
到目前为止,我有:
for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd
...但这只会下降一级目录。
任何人都可以帮忙吗?提前致谢!
我在一个非常复杂的目录结构中有许多文件,出于不值得讨论的原因,我需要将所有扩展名为“.inp”的文件重命名为具有“.TXT”扩展名。还有许多其他扩展名的文件我不想被触及,我想递归地至少向下执行 5 个级别。
到目前为止,我有:
for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd
...但这只会下降一级目录。
任何人都可以帮忙吗?提前致谢!
在 Windows 7 上,以下单行命令适用于我,以递归方式将 *.js 中的所有文件重命名为 *.txt:
FOR /R %x IN (*.js) DO ren "%x" *.txt
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt"
应该为你工作。替换startdir
为您的起始目录名,当您检查这是否满意时,删除echo
之前的ren
实际重命名。
对于downvoters:执行批处理文件与从命令提示符执行不同之处在于元变量(循环控制变量)的每个%%x
位置x
都需要减少到%
,所以
for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt"
如果您从提示符执行此操作,应该可以工作。请阅读关于echo
.
约翰史密斯的回答非常好,而且有效。但要完全清楚(我不得不重新阅读 magoo 的笔记以找出正确的语法),这正是你需要做的......
BATCH FILE:
FOR /R %%x IN (*.js) DO ren "%%x" *.txt
COMMAND LINE:
FOR /R %x IN (*.js) DO ren "%x" *.txt
投票赞成他们的回答,我只是一个卑微的形成者......