Как получить и вчера отобразить дату?

Я использую команду даты для сценария пакетной обработки.
Я задаюсь вопросом, как использовать дату команды для получения вчера даты.

5
задан Mofi 10 April 2016 в 11:50
поделиться

3 ответа

Глядя на ответ @JRL... Если это действительно так сложно, возможно, используйте PowerShell, а затем сделайте аналогично Powershell's Get-date: Как получить вчера в 22:00 в переменной?

Вы можете вызвать PowerShell в bat-файле следующим образом: Use bat to start Powershell script

В итоге вы получите решение из трех или четырех строк, а не 100 или около того, написанных (безупречно, добавлю я) Робом Ван дер Воудом.

Удачи...

4
ответ дан 18 December 2019 в 07:08
поделиться

Каждый раз, когда вы слышите пакет, подумайте о Робе Ван дер Вуде. Во всяком случае, вот вчера.bat .

5
ответ дан 18 December 2019 в 07:08
поделиться

Основная опасность, связанная с переменной даты, - это чувствительность к языку. Если у вас есть 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 и / или количество экранированных символов, чтобы сделать ее более читаемой / поддерживаемой.

9
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: