Вчерашняя дата с использованием кода VBS и командного файла (формат: ГГГГ_ММ_DD) - PullRequest
1 голос
/ 19 сентября 2019

С помощью пакета я хочу создать переменную, которая содержит дату вчерашнего дня, именно мне нужен этот формат: "YYYY_MM_DD"

Мне удалось получить этот формат: YYYYMMDD

Я создал файл 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

Я хочу иметь этот формат:

ГГГГ_ММ_DD

Заранее спасибо,

1 Ответ

6 голосов
/ 19 сентября 2019

Чтобы разделить вашу задачу на два отдельных файла, как вы это сделали:

:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...