批处理脚本实现目录树中文件名与文件夹名批量替换需求
批处理实现递归替换目录/文件名中的"Template"为自定义项目名
以下是修改后的完整批处理脚本,可自动完成模板复制后的文件名、文件夹名替换,无需手动启动Bulk Rename Utility:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION echo THIS WILL CREATE YOUR PROJECT FOLDERS echo[ SET /p projectName="Enter Project Number and Name (ex. 23-000_My New Project): " REM 创建项目目录 MkDir "Y:\%projectName%" MkDir "T:\Final Project Files 2023\%projectName%" REM 复制模板文件到项目目录,/i自动识别目标为目录 xcopy "W:\_PROJECT TEMPLATES_\Template\" "Y:\%projectName%\" /e /i echo[ echo 正在自动替换所有包含"Template"的文件和文件夹名称... echo[ REM 先处理文件:递归查找所有含Template的文件,替换文件名 FOR /f "delims=" %%e IN ('dir /s /b /a:-d "Y:\%projectName%\*Template*"') DO ( SET "filename=%%~nxe" SET "filename=!filename:Template=%projectName%!" REN "%%e" "!filename!" ) REM 再处理文件夹:按从深到浅顺序替换,避免父文件夹改名后子路径失效 FOR /f "delims=" %%e IN ('dir /s /b /ad "Y:\%projectName%\*Template*" ^| sort /rev') DO ( SET "dirname=%%~nxe" SET "dirname=!dirname:Template=%projectName%!" REN "%%e" "!dirname!" ) echo[ echo 模板文件夹和文件已复制并完成重命名。 echo[ PAUSE
关键逻辑说明
SETLOCAL ENABLEDELAYEDEXPANSION:启用延迟变量扩展,确保循环中修改的变量能实时生效。- 先处理文件再处理文件夹:若先修改父文件夹路径,后续文件的查找路径会失效,因此优先完成所有文件重命名。
sort /rev:对文件夹路径逆序排序,实现从最深层文件夹开始重命名,避免父目录改名后子目录无法被识别。*Template*:精准匹配所有文件名/文件夹名中包含"Template"的项,保持与原模板命名规则一致。
效果验证
执行脚本后,原目录结构:
Y:\23-000_My New Project\Template-Folder1 Y:\23-000_My New Project\Template-Folder2 Y:\23-000_My New Project\Template-Folder2\Template.txt
将自动转换为:
Y:\23-000_My New Project\23-000_My New Project-Folder1 Y:\23-000_My New Project\23-000_My New Project-Folder2 Y:\23-000_My New Project\23-000_My New Project-Folder2\23-000_My New Project.txt
内容的提问来源于stack exchange,提问作者echoquack
相关产品推荐
相关产品推荐

