如何用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
相关产品推荐
相关产品推荐

