在批处理文件中使用 powershell 输出作为变量时出现问题

在批处理文件中使用 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命令中,您不仅需要转义括号,还需要转义 mod(百分比)。括号用 转义^,百分比用 转义%。请注意,这仅适用于批处理文件,不适用于命令行。

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

ECHO %doc%

相关内容