批处理文件中%变量%和!变量之间的差异

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

正在编写一个批处理文件,其中需要将包含“!”的字符串输出到另一个文件。

但是,当我将该字符串回显到另一个文件时,它会从输出中删除“!”。

输入:

set LINE=Hi this is! output
echo !LINE!>>new_file.txt

新产出_txt文件是:

Hi this is output

另外,如果输入是

set LINE=Hello!! this is output!!
echo !LINE!>>new_file.txt

新产出_file.txt:

Hello

因此,它跳过了!(感叹号)从输出到新的_档案。如果我使用%行%,那么它只会在输出文件中显示“echo is on”。

提问于
用户回答回答于

已启用延迟展开,并希望输出感叹号,则需要转义它。

感叹号的转义不需要,一个或两个插入符号,取决于位置。

@echo off
set test1=Test1!
setlocal EnableDelayedExpansion
set test2=Test2^^!
set "test3=Test3^!"

echo !test1!
echo !test2!
echo !test3!
用户回答回答于

SETLOCAL EnableDelayedExpansion在代码的更高的地方。

扫码关注云+社区