我正在写一个batch file,我需要输出一个string包含'!' 到另一个文件。 但是,当我将该string回显给另一个文件时,它将删除“!” 从输出。
例如:input:
set LINE=Hi this is! output echo !LINE!>>new_file.txt
new_file.txt中的输出是:
Hi this is output
另外,如果input是
set LINE=Hello!! this is output!! echo !LINE!>>new_file.txt
在new_file.txt中输出:
Hello
因此,它跳过! (感叹号)从输出到new_file。 如果使用%LINE%,则只显示输出文件的“echo is on”。
请build议一种方法来解决这个问题。
如果您启用了延迟扩展并希望输出感叹号,则需要将其转义。
转义感叹号不需要一个或两个插入符号,具体取决于放置位置。
@echo off set test1=Test1! setlocal EnableDelayedExpansion set test2=Test2^^! set "test3=Test3^!" echo !test1! echo !test2! echo !test3!
!var!
的区别 和%var%
的块在DOS批处理解释:为什么我的设置命令导致没有得到存储?
批解析器的解释可以在Windows命令解释器(CMD.EXE)如何解析脚本找到?
看起来你已经在代码中更高的地方调用了SETLOCAL EnableDelayedExpansion
。 看看这里看看是什么影响。