Я использую команду даты для сценария пакетной обработки.
Я задаюсь вопросом, как использовать дату команды для получения вчера даты.
Глядя на ответ @JRL... Если это действительно так сложно, возможно, используйте PowerShell, а затем сделайте аналогично Powershell's Get-date: Как получить вчера в 22:00 в переменной?
Вы можете вызвать PowerShell в bat-файле следующим образом: Use bat to start Powershell script
В итоге вы получите решение из трех или четырех строк, а не 100 или около того, написанных (безупречно, добавлю я) Робом Ван дер Воудом.
Удачи...
Каждый раз, когда вы слышите пакет, подумайте о Робе Ван дер Вуде. Во всяком случае, вот вчера.bat .
Основная опасность, связанная с переменной даты, - это чувствительность к языку. Если у вас есть PowerShell (в наши дни он намного более распространен даже в крупных корпорациях), вы можете использовать PowerShell для форматирования и заключить его в пакетный оператор FOR.
Следующая строка PowerShell выполнит вычисления и отформатирует дату за вас: -
PowerShell $date = Get-Date; $date=$date.AddDays(-1); $date.ToString('yyyy-MM-dd')
Затем вы можете выполнить это с помощью FOR, чтобы поместить его в переменную командного файла (не забывая экранировать целую кучу символов с помощью шляпы ^ и использовать обратную кавычку, чтобы избежать вставленных кавычек): -
for /f "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-1^)^; $date.ToString^('yyyy-MM-dd'^)`) do set YESTERDAY=%%i echo %YESTERDAY%
Я уверен, что кто-то с превосходными навыками PowerShell и пакетного программирования может уменьшить команду PowerShell и / или количество экранированных символов, чтобы сделать ее более читаемой / поддерживаемой.