处理可能必要的转义字符

Kra*_*ros 1 batch-file

相关:使用具有特殊字符的批处理回显

如何处理在可能或可能不是特殊字符的文本上使用转义字符?

假设我们有用户输入:

Set /p var=prompt:
Run Code Online (Sandbox Code Playgroud)

现在,我需要确保即使用户输入类似特殊字符的内容,文本也会被解释为文本.但我不能简单地在变量之前添加^ ...因为那会取消变量.^^%var%和^ %% var%选项似乎也不起作用.

我该怎么做呢?

Aac*_*ini 5

您应该意识到程序的源代码中或者通过命令%variable%的可替换参数扩展变量时需要转义for.如果您通过!延迟扩展变量,则不需要这样做!扩张.所以,你的问题可以通过这种方式轻松解决:

setlocal EnableDelayedExpansion

Set /p var=prompt:
echo !var!
Run Code Online (Sandbox Code Playgroud)

当您读取可能具有特殊字符的文件时,避免此问题的标准方法是在将值设置为已禁用延迟扩展时将可替换参数的值括在引号中,然后启用延迟扩展以管理该值.当然,这种方法的力插入一个endlocal命令的循环:

for /F "delims=" %%a in (anyFile.txt) do (
   set "line=%%a"
   setlocal EnableDelayedExpansion
   echo Line with special characters: !line!
   endlocal
)
Run Code Online (Sandbox Code Playgroud)