使用 VBS 代码和批处理文件的昨天日期(格式:YYYY_MM_DD)

Yesterday date using VBS code and batch file (format : YYYY_MM_DD)

使用批处理我想创建一个包含昨天日期的变量,正是我需要这种格式:"YYYY_MM_DD"

我成功了这个格式:YYYYMMDD

我创建了一个 vbs 文件 "yesterday.vbs" :

d = date() - 1
wscript.echo year(d) * 10000 + month(d) * 100 + day(d)

在我的批处理文件中,我调用了我的代码:

REM ----------------   Yesterday VAR  ---------------------

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

我想要这种格式:

YYYY_MM_DD

提前致谢,

要将您的任务拆分为两个单独的文件,就像您所做的那样:

:

@Echo Off
For /F %%A In ('CScript //NoLogo "yesterday.vbs"') Do Set "Yesterday=%%A"
Echo(%Yesterday%
Pause

:

dtmYesterday = DateAdd("d", -1, Now())
strDate = Year(dtmYesterday) & "_" & Right("0" & Month(dtmYesterday), 2) _
  & "_" & Right("0" & Day(dtmYesterday), 2)
WScript.Echo strDate

如果您想从 创建 ,运行,则删除它:

@Echo Off
(   Echo dtmYesterday = DateAdd("d", -1, Now(^)^)
    Echo strDate = Year(dtmYesterday^) ^& "_" ^& Right("0" ^& Month(dtmYesterday^), 2^) ^& "_" ^& Right("0" ^& Day(dtmYesterday^), 2^)
    Echo WScript.Echo strDate)>"yesterday.vbs"
For /F %%A In ('CScript //NoLogo yesterday.vbs') Do Set "Yesterday=%%A"
Del "yesterday.vbs"
Echo(%Yesterday%
Pause

或者,您仍然可以使用 ,但将其直接嵌入到您的 :

<!-- :
@Echo Off
For /F %%A In ('CScript //NoLogo "%~f0?.wsf"') Do Set "Yesterday=%%A"
Echo(%Yesterday%
Pause
GoTo :EOF
-->
<Job><Script Language="VBScript">
    dtmYesterday = DateAdd("d", -1, Now())
    strDate = Year(dtmYesterday) & "_" & Right("0" & Month(dtmYesterday), 2) _
      & "_" & Right("0" & Day(dtmYesterday), 2)
    WScript.Echo strDate
  </Script></Job>


综上所述,我建议您忘记 ,而是使用 中的

@Echo Off
For /F %%A In ('PowerShell -NoP "(Get-Date).AddDays(-1).ToString('yyy_MM_dd')"'
)Do Set "Yesterday=%%A"
Echo(%Yesterday%
Pause