我正在尝试 运行 来自批处理脚本的几个 PowerShell 命令,但是“%”符号没有被传输
I am trying to run several PowerShell commands from a batch script, however the "%" symbol does not get transferred
我正在尝试 运行 从批处理脚本执行多个 PowerShell 命令,但是“%”符号没有传输到 PowerShell。
例如,在命令提示符中写入以下内容window:
powershell -Command "& {echo 'per%entage'}"
将打印:
per%entage
这是我想要的,但是如果我将相同的命令保存到 .bat 或 .cmd 文件中,它会打印:
perentage
为什么忽略“%”符号?有没有办法让它正确传输?我特别困惑的是它在命令提示符 window 中工作,但在批处理脚本中不起作用。你会认为两者要么有效要么无效。
非常遗憾,cmd.exe
的行为与来自 交互式提示 与 来自批处理文件 [=49] 的命令调用不同=] 关于如何解释 %
个字符。
有关背景信息,请参阅 。
因此,当从批处理文件调用时,一个%
字符。即要逐字解释 ,必须转义为 %%
:
:: From a *batch file*.
powershell -Command "'per%%entage'"
注:
echo
是 Write-Output
cmdlet, whose explicit use is rarely needed - see this answer 的内置别名以获取更多信息。
在使用 PowerShell CLI 时几乎不需要以 & { ... }
形式调用命令(此处符号为 ...
)- 只需使用 ...
原样。
通常,对于可预测的调用,也值得使用 -NoProfile
开关 - 在 -Command
参数之前 - 因此绕过 PowerShell 配置文件的加载,这些文件主要用于 interactive 会话。
我正在尝试 运行 从批处理脚本执行多个 PowerShell 命令,但是“%”符号没有传输到 PowerShell。
例如,在命令提示符中写入以下内容window:
powershell -Command "& {echo 'per%entage'}"
将打印:
per%entage
这是我想要的,但是如果我将相同的命令保存到 .bat 或 .cmd 文件中,它会打印:
perentage
为什么忽略“%”符号?有没有办法让它正确传输?我特别困惑的是它在命令提示符 window 中工作,但在批处理脚本中不起作用。你会认为两者要么有效要么无效。
非常遗憾,cmd.exe
的行为与来自 交互式提示 与 来自批处理文件 [=49] 的命令调用不同=] 关于如何解释 %
个字符。
有关背景信息,请参阅
因此,当从批处理文件调用时,一个%
字符。即要逐字解释 ,必须转义为 %%
:
:: From a *batch file*.
powershell -Command "'per%%entage'"
注:
echo
是Write-Output
cmdlet, whose explicit use is rarely needed - see this answer 的内置别名以获取更多信息。在使用 PowerShell CLI 时几乎不需要以
& { ... }
形式调用命令(此处符号为...
)- 只需使用...
原样。通常,对于可预测的调用,也值得使用
-NoProfile
开关 - 在-Command
参数之前 - 因此绕过 PowerShell 配置文件的加载,这些文件主要用于 interactive 会话。