Проблема с использованием вывода 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 было неожиданным в это время.

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

1 ответ

Решение

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

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

ECHO %doc%
Другие вопросы по тегам