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

use*_*314 2 vbscript date batch-file

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

我成功使用了以下格式:YYYYMMDD

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

d = date() - 1
wscript.echo year(d) * 10000 + month(d) * 100 + day(d)
Run Code Online (Sandbox Code Playgroud)

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

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

for /f %%a in ('cscript //nologo yesterday.vbs') do set yesterday=%%a
Run Code Online (Sandbox Code Playgroud)

我想要这种格式:

YYYY_MM_DD

提前致谢,

Com*_*mpo 7

像完成操作一样,将您的任务分为两个单独的文件:

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

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

如果要从创建,请运行它,然后将其删除:

@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
Run Code Online (Sandbox Code Playgroud)

另外,您仍然可以使用,但将其直接嵌入到

<!-- :
@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>
Run Code Online (Sandbox Code Playgroud)


所有这一切是说,我会建议你忘记和使用从你的来代替:

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