Назад | Перейти на главную страницу

Проблема с использованием вывода PowerShell в качестве переменной в пакетном файле

Я могу вручную запустить эту команду из командной строки Windows:

powershell (new-timespan -start 01/01/2000 -end (get-date)).days % 14

И он возвращает число от 0 до 13. Я хочу использовать этот результат в пакетном файле, но эта строка возвращает ошибку:

for /f %%i in ('powershell (new-timespan -start 01/01/2000 -end (get-date)).days % 14') do set doc=%%i

Ошибка:

) .days было неожиданным в это время.

Я подозреваю, что мне нужно добавить больше кавычек, двойных кавычек, апострофов и скобок, но я пробовал все возможные комбинации и не могу заставить их работать. Думаю, может быть, тоже нужны ^^ s?

в FOR Вам нужно экранировать не только круглые скобки, но и мод (процент). Парены экранируются ^, процент по %. Обратите внимание, что это будет работать только в пакетном файле, а не в командной строке.

FOR /F %%i IN ('powershell ^(new-timespan -start 01/01/2000 -end ^(get-date^)^).days %% 14') DO (
    SET doc=%%i
)

ECHO %doc%