You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bat文件中对系统日期减一天并生成指定命名文件

批处理实现日期减一天并命名文件的解决方案

方法一:借助PowerShell实现(推荐,兼容性强)

批处理本身对日期运算的支持较弱,借助PowerShell可以更可靠地处理日期加减,无需考虑跨月、跨年等复杂场景。

完整代码:

@echo off
setlocal enabledelayedexpansion

:: 通过PowerShell计算前一天日期,并格式化为yyyyMMdd格式
for /f %%a in ('powershell -Command "(Get-Date).AddDays(-1).ToString('yyyyMMdd')"') do set "yesterday=%%a"

:: 创建指定名称的空文件
echo. > "File_!yesterday!.txt"

echo 已生成文件:File_!yesterday!.txt
endlocal

代码说明:

  • (Get-Date).AddDays(-1):获取当前日期的前一天
  • ToString('yyyyMMdd'):将日期转换为无分隔符的数字格式
  • for /f:捕获PowerShell的输出结果,赋值给变量yesterday
  • echo. > "File_!yesterday!.txt":创建以目标日期命名的空文件

方法二:纯批处理实现(局限性强,需匹配系统日期格式)

如果环境无法使用PowerShell,可以尝试纯批处理方法,但该方法依赖系统的日期显示格式(假设系统日期格式为yyyy-MM-dd),且跨月、跨年场景需要额外逻辑处理,容易出错。

示例代码:

@echo off
setlocal enabledelayedexpansion

:: 获取当前系统日期(格式需为yyyy-MM-dd)
set "today=%date%"

:: 拆分年、月、日
set "year=!today:~0,4!"
set "month=!today:~5,2!"
set "day=!today:~8,2!"

:: 临时修改系统日期为当前日期,再回退一天
echo !year!/!month!/!day! | date /t >nul
date !year!/!month!/!day! -1 >nul 2>&1
set "yesterday=%date%"
:: 恢复系统原日期
date /t >nul

:: 去除日期中的分隔符,转为yyyyMMdd格式
set "yesterday=!yesterday:-=!"

:: 创建目标文件
echo. > "File_!yesterday!.txt"

echo 已生成文件:File_!yesterday!.txt
endlocal

注意:该方法需要管理员权限,且仅在系统日期格式为yyyy-MM-dd时有效,遇到1月1日、每月1日等场景会出现计算错误,不推荐用于生产环境。

内容的提问来源于stack exchange,提问作者Muneendra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:27:08