批处理实现去除文件夹名后两位并合并同项目号多版本文件夹
批处理合并同项目号多版本文件夹解决方案
该需求完全可实现,原代码的问题是仅执行重命名操作,遇到同项目号重名就会跳过,改为先按项目号创建父文件夹、移动所有版本文件、再清空删除旧版本文件夹的逻辑即可实现你的要求。
实现代码
@echo off setlocal enabledelayedexpansion enableextensions :: 遍历当前目录下所有符合*_?命名规则的文件夹(适配5位项目号_版本字母的格式) for /d %%f in (*_?) do ( :: 提取前5位作为项目号 set "project_id=%%~nf" set "project_id=!project_id:~0,5!" :: 项目号文件夹不存在则先创建 if not exist "!project_id!" mkdir "!project_id!" :: 移动当前版本文件夹内所有内容到项目号文件夹 :: 带/y参数表示重名文件自动覆盖,不需要自动覆盖可删除该参数 move /y "%%f\*" "!project_id!\" :: 删除已清空的旧版本文件夹 rd "%%f" ) echo 所有文件夹合并完成 pause endlocal
注意事项
- 运行前请先备份所有原始文件夹,避免操作失误丢失数据
- 代码仅会处理命名符合「前缀_单个字符」规则的文件夹,不会误操作其他命名的文件夹
- 如果版本文件夹内包含子文件夹,代码也会同步移动子文件夹及内部所有内容,符合合并需求
- 你给出的示例文件夹运行该代码后,会生成12000、10200、50000三个文件夹,其中10200文件夹内包含原来A、B、C三个版本的所有文件,完全符合你的预期结果
内容的提问来源于stack exchange,提问作者Space4Monkeys
相关产品推荐
相关产品推荐

