如何用CMD脚本批量重命名父文件夹下子目录中的指定文件夹?
批量重命名子目录内指定文件夹的CMD脚本解决方案
问题根源
你当前的脚本失效的核心原因:
FOR /D %%D IN (*.*)只会遍历父文件夹下带扩展名的子目录,应该用(*)来匹配所有子目录。- 循环内的
REN命令没有指定子目录路径,只会在父文件夹(当前工作目录)查找目标文件夹,根本找不到子目录里的Foo/Bar/Baz,所以无法执行重命名。
解决方案1:固定规则的简洁脚本
如果你的重命名规则是固定的几个,用这个脚本最直接:
@echo off :: 遍历父文件夹下所有一级子目录 for /d %%D in (*) do ( :: 检查子目录内是否存在目标文件夹,存在则重命名 if exist "%%D\Foo" ren "%%D\Foo" "Apple" if exist "%%D\Bar" ren "%%D\Bar" "Banana" if exist "%%D\Baz" ren "%%D\Baz" "Mango" ) pause
解决方案2:可扩展规则的通用脚本
如果后续需要添加更多重命名规则,用这个版本更方便,只需修改rename_rules变量即可:
@echo off setlocal enabledelayedexpansion :: 定义重命名规则,格式:原名称=新名称,多个规则用分号分隔 set "rename_rules=Foo=Apple;Bar=Banana;Baz=Mango" :: 遍历父文件夹下所有一级子目录 for /d %%D in (*) do ( :: 拆分重命名规则并逐个处理 for %%R in ("!rename_rules:;=" "!") do ( for /f "tokens=1,2 delims==" %%A in ("%%~R") do ( if exist "%%D\%%A" ( ren "%%D\%%A" "%%B" echo 完成重命名: %%D\%%A → %%D\%%B ) ) ) ) endlocal pause
使用说明
- 将上述任意一个脚本保存为
.cmd格式文件(比如rename_folders.cmd),放到父文件夹中。 - 双击运行脚本,即可自动完成所有目标文件夹的重命名。
- 如果需要递归处理所有层级的子目录(不仅仅是一级子目录),把外层的
for /d %%D in (*)改成for /r /d %%D in (*)即可。
内容的提问来源于stack exchange,提问作者Gosmith
相关产品推荐
相关产品推荐

