抑制 %(百分号)在 CMD 文件中转义? (还原)
Supress % (percent sign) escaping in a CMD file? (Redux)
经过研究,我想我知道了这个问题的答案:没有。但以防万一我遗漏了一些东西:有没有办法在 CMD 文件中全局抑制 % 转义?类似于:
SETLOCAL NOESCAPE
MYAPP.EXE "%41%42%43%44"
因此 MYAPP.EXE 看到文字字符串:
"%41%42%43%44"
我知道我可以加倍使用百分号,但想知道是否有可以打开和关闭的设置。
谢谢。
不,没有允许执行的批处理行将百分比视为文字的设置。百分比解释是批解析器工作方式的一个组成部分 - 请参阅 了解更多信息。
如果要在已执行的批处理脚本行中使用百分比文字,则必须加倍。
我想到了一种嵌入和执行包含未转义百分比文字的命令的方法,但这是一个丑陋的 hack。您将字符串文字放在 "labeled" 注释中,使用 FINDSTR 提取字符串文字,并通过 FOR /F 处理该值。您可以使用多个标签来选择性地获取您需要的字符串。
@echo off
::cmd1:myapp.exe "%41%42%43%44"
::cmd2:myapp.exe "%91%92%93%94"
for /f "tokens=1* delims=:" %%A in ('findstr "^::cmd1:" "%~f0"') do %%B
for /f "tokens=1* delims=:" %%A in ('findstr "^::cmd2:" "%~f0"') do %%B
我不了解你,但我宁愿简单地转义百分比 ;-)
经过研究,我想我知道了这个问题的答案:没有。但以防万一我遗漏了一些东西:有没有办法在 CMD 文件中全局抑制 % 转义?类似于:
SETLOCAL NOESCAPE
MYAPP.EXE "%41%42%43%44"
因此 MYAPP.EXE 看到文字字符串:
"%41%42%43%44"
我知道我可以加倍使用百分号,但想知道是否有可以打开和关闭的设置。
谢谢。
不,没有允许执行的批处理行将百分比视为文字的设置。百分比解释是批解析器工作方式的一个组成部分 - 请参阅 了解更多信息。
如果要在已执行的批处理脚本行中使用百分比文字,则必须加倍。
我想到了一种嵌入和执行包含未转义百分比文字的命令的方法,但这是一个丑陋的 hack。您将字符串文字放在 "labeled" 注释中,使用 FINDSTR 提取字符串文字,并通过 FOR /F 处理该值。您可以使用多个标签来选择性地获取您需要的字符串。
@echo off
::cmd1:myapp.exe "%41%42%43%44"
::cmd2:myapp.exe "%91%92%93%94"
for /f "tokens=1* delims=:" %%A in ('findstr "^::cmd1:" "%~f0"') do %%B
for /f "tokens=1* delims=:" %%A in ('findstr "^::cmd2:" "%~f0"') do %%B
我不了解你,但我宁愿简单地转义百分比 ;-)