相关:Using batch echo with special characters
如何处理在可能或可能不是特殊字符的文本上使用转义字符?
假设我们有用户输入:
Set /p var=prompt:
现在,我需要确保文本被解释为文本,即使用户输入类似特殊字符的内容也是如此。但我不能简单地在变量之前添加^ ...因为那会取消变量。 ^^%var%和^ %% var%选项似乎也不起作用。
我该怎么做?
答案 0 :(得分:5)
您应该意识到在程序的源代码中或通过%variable%
或for
命令的可替换参数扩展变量时需要转义。如果您通过!延迟扩展变量,则不需要这样做!扩张。所以,你的问题可以通过这种方式轻松解决:
setlocal EnableDelayedExpansion
Set /p var=prompt:
echo !var!
当您读取可能具有特殊字符的文件时,避免此问题的标准方法是在将值设置为已禁用延迟扩展时将可替换参数的值括在引号中,然后启用延迟扩展以便管理值。当然,这种方法强制在循环中插入endlocal
命令:
for /F "delims=" %%a in (anyFile.txt) do (
set "line=%%a"
setlocal EnableDelayedExpansion
echo Line with special characters: !line!
endlocal
)
答案 1 :(得分:0)
不可能。 shell在脚本执行之前处理用户输入。您的脚本甚至不知道用户输入了转义字符。