Если я правильно понял ваш вопрос, вы хотите написать Batch Script (.bat
), который использует Powershell для получения предыдущей даты.
Ниже приведено то, что вы можете поместить в свой .bat
Сценарий, чтобы получить значение.
powershell -Command (Get-Date).AddDays(-1).ToString('yyyyMMdd')
Вы не нужно "пройти обратно" переменную. Вместо этого вы просто делаете вывод powershell
называть нужную вам информацию. Используя свой код, который вы опубликовали, выход отсутствует. Однако использование вышеизложенного будет эквивалентно «возврату» переменной $date
в ваш код.
Пакет действительно не имеет простого способа захвата переменной. Существует два основных способа захвата переменных. Вы либо используете цикл for
(это своего рода хак), либо записываете вывод в файл, а затем читаете этот файл в переменной.
Метод 1 - For Loop
Вот код, чтобы захватить вывод в переменную с именем v
(доступ с %v%
).
for /f %d in (
'powershell.exe -Command "(Get-Date).AddDays(-1).ToString(\"yyyyMMdd\")"'
) do set "v=%d"
Метод 2 - Файл Выход
Здесь мы пишем вывод Powershell в файл, имя которого хранится в переменной tempFile
. Затем мы читаем содержимое файла обратно в переменную с именем v
. Наконец, мы удаляем tempFile
.
powershell.exe -Command (Get-Date).AddDays(-1).ToString('yyyyMMdd') > %tempFile%
set /p v=< %tempFile%
del %tempFile%
Почему бы не написать весь сценарий в Powershell так что вам не нужно передавать дату? – alroc