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

如何用Batch结合VBS获取格式为YYYY_MM_DD的昨日日期

解决Batch中获取YYYY_MM_DD格式昨日日期的问题

嘿,这个需求不难搞定,给你两种方案任选:

方案一:直接修改VBS脚本输出目标格式

既然你已经用VBS来获取日期,不如直接让它输出带下划线的格式,这样Batch里不用额外处理。修改你的yesterday.vbs为以下代码:

d = Date() - 1
' 分别获取年、月、日,月份和日期不足两位时自动补零
yearStr = Year(d)
monthStr = Right("0" & Month(d), 2)
dayStr = Right("0" & Day(d), 2)
' 拼接成YYYY_MM_DD格式输出
WScript.Echo yearStr & "_" & monthStr & "_" & dayStr

这样你原来的Batch调用代码完全不用改,%yesterday%变量直接就是你要的格式啦:

REM ---------------- Yesterday VAR ---------------------
for /f %%a in ('cscript //nologo yesterday.vbs') do set yesterday=%%a

方案二:在Batch中拆分已有的YYYYMMDD变量

如果你不想改动VBS脚本,可以在拿到%yesterday%(格式为YYYYMMDD)后,用Batch的字符串截取功能拆分并拼接:

REM ---------------- Yesterday VAR ---------------------
for /f %%a in ('cscript //nologo yesterday.vbs') do set yesterday=%%a
REM 将YYYYMMDD格式转换为YYYY_MM_DD
set yesterday_formatted=%yesterday:~0,4%_%yesterday:~4,2%_%yesterday:~6,2%

这里的截取规则是:

  • %yesterday:~0,4%:从第1位(索引0)开始取4个字符,对应年份
  • %yesterday:~4,2%:从第5位(索引4)开始取2个字符,对应月份
  • %yesterday:~6,2%:从第7位(索引6)开始取2个字符,对应日期

两种方案都能完美得到YYYY_MM_DD格式的昨日日期,选你顺手的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:48:45