批量递归重命名文件夹:适配深层子文件夹的批处理代码求助
递归重命名所有
old文件夹为new的批处理方案 直接用for /r命令实现递归遍历,下面是完整的批处理代码,能处理所有层级的old文件夹:
@echo off :: 设置要处理的根目录,比如这里是C:\test set "target_root=C:\test" :: 递归遍历根目录下所有名为old的文件夹 for /r "%target_root%" /d %%f in (old) do ( :: 拼接目标文件夹路径(原文件夹的父目录下的new) set "dest_path=%%~dpfnew" :: 检查目标路径是否已存在,避免重命名失败 if not exist "!dest_path!" ( ren "%%f" "new" echo 完成重命名: "%%f" → "!dest_path!" ) else ( echo 跳过: "!dest_path!" 已存在,无法重命名 "%%f" ) ) pause
关键说明:
for /r "%target_root%" /d %%f in (old):/r参数开启递归遍历,/d指定只匹配文件夹,(old)是要查找的目标文件夹名称,会从target_root开始遍历所有子目录里的old文件夹。%%~dpf:提取当前文件夹%%f的父目录路径,用来拼接出重命名后的目标路径new。- 加入了存在性检查,如果目标位置已经有
new文件夹,会跳过并给出提示,避免命令报错。
灵活调整:
如果不需要固定根目录,想处理批处理文件所在目录下的所有old文件夹,把set "target_root=C:\test"这行删掉,把for命令改成:
for /r /d %%f in (old) do (
内容的提问来源于stack exchange,提问作者user1202017
相关产品推荐
相关产品推荐

