Supress%(百分号)在CMD文件中转义? (终极版)

时间:2015-05-05 21:00:03

标签: batch-file cmd command escaping

经过研究,我想我知道答案:没有。但是,万一我错过了一些东西:有没有办法在CMD文件中全局抑制%转义?类似的东西:

SETLOCAL NOESCAPE
MYAPP.EXE "%41%42%43%44"

所以MYAPP.EXE会看到文字字符串:

"%41%42%43%44"

我知道我可以加倍百分号,但想知道是否有可以开启和关闭的设置。

感谢。

1 个答案:

答案 0 :(得分:3)

不,没有允许执行的批处理行将百分比视为文字的设置。百分比解释是批处理解析器工作方式的一个组成部分 - 有关详细信息,请参阅https://stackoverflow.com/a/4095133/1012053

如果要在已执行的批处理脚本行中使用百分比文字,则必须加倍。

我想到了一种嵌入和执行包含未转义百分比文字的命令的方法,但这是一个丑陋的黑客攻击。您将字符串文字放在“标记”注释中,使用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

我不了解你,但我宁愿逃避百分比; - )