在批处理文件中为文件名追加当月最后日期的实现方法
批处理实现文件名添加当月最后日期
实现思路
Windows CMD原生命令无法直接获取当月最后一天,因此我们可以在批处理中内嵌一段VBScript代码来计算当月的最后日期,再利用这个日期完成文件名的重命名操作。
完整批处理代码
@echo off setlocal enabledelayedexpansion :: 定义要修改的文件名 set "source_file=ABC.pdf" :: 用VBScript计算当月最后一天的YYYYMMDD格式日期 echo WScript.Echo DateAdd("d", -1, DateAdd("m", 1, DateSerial(Year(Date), Month(Date), 1))) > get_last_day.vbs for /f "tokens=1-3 delims=/" %%a in ('cscript //nologo get_last_day.vbs') do ( set "year=%%c" set "month=%%a" set "day=%%b" ) :: 补零处理,确保月份和日期是两位数字 if !month! lss 10 set "month=0!month!" if !day! lss 10 set "day=0!day!" set "last_date=!year!!month!!day!" :: 删除临时VBS文件 del get_last_day.vbs :: 拆分原文件名的主名和扩展名 for /f "delims=. tokens=1,*" %%i in ("%source_file%") do ( set "filename=%%i" set "ext=%%j" ) :: 执行重命名 ren "%source_file%" "!filename!_!last_date!.!ext!" echo 文件名已修改为: !filename!_!last_date!.!ext! endlocal
代码说明
setlocal enabledelayedexpansion:开启延迟变量扩展,确保循环内的变量能正确取值- 内嵌VBScript代码:通过
DateSerial构造当月第一天,加一个月后再减一天,得到当月最后一天 - 补零处理:确保月份和日期始终是两位数字(比如1月变成01,5日变成05)
- 拆分文件名:分离主文件名和扩展名,避免直接拼接导致扩展名丢失
- 执行
ren命令完成重命名操作
使用说明
- 将上述代码保存为
rename_with_last_day.bat - 把批处理文件和要修改的
ABC.pdf放在同一目录下 - 双击运行批处理即可完成重命名
内容的提问来源于stack exchange,提问作者peter
相关产品推荐
相关产品推荐

