如何遍历文件夹名称并根据名称内的日期移动对应文件夹
批处理脚本实现按日期文件夹名移动目录
以下是可直接使用的批处理脚本,适配你提出的目录移动需求:
@echo off setlocal enabledelayedexpansion :: 此处修改为你实际的源根目录、目标根目录 set "source_root=K:\PLPR1" set "target_root=L:\PLPR1" :: 配置数字月份到英文月份的映射 set "month_01=January" set "month_02=February" set "month_03=March" set "month_04=April" set "month_05=May" set "month_06=June" set "month_07=July" set "month_08=August" set "month_09=September" set "month_10=October" set "month_11=November" set "month_12=December" :: 遍历源根目录下所有8位名称的文件夹 for /d %%d in ("%source_root%\????????") do ( set "folder_name=%%~nd" :: 过滤非8位纯数字命名的文件夹(即不符合YYYYMMDD格式的目录不处理) echo "!folder_name!"|findstr /r "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$" >nul || continue :: 拆分日期字段 set "year=!folder_name:~0,4!" set "month_num=!folder_name:~4,2!" set "day=!folder_name:~6,2!" :: 读取对应月份英文名称 set "month_name=!month_!month_num!!" :: 拼接目标路径 set "target_path=%target_root%\!year!\FTP Data\!month_name!\!day! !month_name!" :: 自动创建不存在的上级目录 if not exist "!target_path!\.." md "!target_path!\.." :: 执行移动操作 move "%%d" "!target_path!" ) echo 操作完成 pause
使用注意事项
- 正式执行前建议先把脚本里的
move命令替换为echo move,试运行确认输出的移动路径符合预期后,再改回move执行实际移动,避免误操作 - 你给出的示例中20210830目录被放到了September文件夹下属于明显笔误,脚本默认按月份数字匹配对应月份目录,如有特殊规则可自行调整路径拼接逻辑
内容的提问来源于stack exchange,提问作者Imran Simjee
相关产品推荐
相关产品推荐

