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