求助:编写Windows批处理脚本提取文件名日期并重命名移动文件
Windows批处理实现方案
直接使用以下脚本即可完成需求:
@echo off setlocal enabledelayedexpansion :: 定义目标目录,不存在则自动创建 set "target_dir=C:\ABC\DEF" if not exist "%target_dir%\" md "%target_dir%" :: 定义英文月份简称转数字映射 set "month_map=Jan:01 Feb:02 Mar:03 Apr:04 May:05 Jun:06 Jul:07 Aug:08 Sep:09 Oct:10 Nov:11 Dec:12" :: 遍历匹配规则的源文件 for %%f in ("C:\ABC\abcdef - ggggg hhhhhh iiii jj xxxx kkk -*.txt") do ( set "file_name=%%~nf" :: 提取文件名对应日期字段,适配示例文件的空格拆分规则 for /f "tokens=12,13,14 delims= " %%a in ("!file_name!") do ( :: 处理日期中的逗号,补全日的前导零 set "day=%%b" set "day=!day:,=!" if "!day:~1!"=="" set "day=0!day!" :: 匹配月份对应数字 set "month=" for %%m in (%month_map%) do ( for /f "tokens=1,2 delims=:" %%x in ("%%m") do ( if "%%x"=="%%a" set "month=%%y" ) ) :: 拼接MMddyyyy格式日期 set "formatted_date=!month!!day!%%c" :: 移动并重命名文件 move /Y "%%f" "%target_dir%\abcdef_xxxx_!formatted_date!.txt" ) ) endlocal
注意事项
- 以上脚本默认适配Windows英文系统的月份简写规则,如果你的服务器是中文系统,将
month_map中的英文月份简称替换为对应中文月份即可 - 脚本已添加
/Y参数,移动时会自动覆盖目标路径下的重名文件,如果你需要保留重名文件避免覆盖,删除该参数即可 - 如果文件名的空格分隔位置发生变化,调整
tokens=12,13,14中的数字,匹配日期对应的三个字段位置即可适配新的命名规则
内容的提问来源于stack exchange,提问作者YaS
相关产品推荐
相关产品推荐

