Сценарий такой. Мне нужна дата предыдущего дня (например, сегодня -1) в качестве переменной в пакетном файле. Но если предыдущий день - воскресенье (т.е. скрипт запущен в понедельник), он должен вернуть дату субботы (т.е. сегодня -2). Я пробовал приведенный ниже сценарий, но, похоже, он не работает. Кто-нибудь может помочь, пожалуйста.
ECHO STARTING
FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -Command "& {if ^(^([Int] ^(Get-Date^).DayOfWeek^) -eq 1^) {get-date^(^(get-date^).addDays^(-2^)^) -uformat "%%d.%%m.%%Y"} Else{get-date^(^(get-date^).addDays^(-1^)^) -uformat "%%d.%%m.%%Y"} }`) DO (SET var=%%F)
ECHO DATE CAPTURED IN VARIABLE IS %var%
Я пробовал выполнить следующую команду непосредственно в командной строке, и она работает правильно.
powershell -Command "& {if (([Int] (Get-Date).DayOfWeek) -eq 1) {get-date((get-date).addDays(-2)) -uformat "%d.%m.%Y"} Else{get-date((get-date).addDays(-1)) -uformat "%d.%m.%Y"} }
Сохранить
if (((Get-Date).DayOfWeek.value__) -eq 1) {get-date((get-date).addDays(-2)) -uformat "%d.%m.%Y"} Else{get-date((get-date).addDays(-1)) -uformat "%d.%m.%Y"}
как файл .ps1; например C: \ Batch \ getvar.ps1
Затем вызовите это в своем пакетном скрипте с помощью
FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -ExecutionPolicy Bypass -File C:\Batch\getvar.ps1`) DO (SET var=%%F)