Windows系统cmd脚本命令特殊字符!的引用,好多文章都是错的,AI的回答包括chatgpt, 文心一言,通义千问 (截止至2024年8月20日)。
正确用法是:
方法一
在!加两个转义字符^,而且引用要用 延迟扩展的引用。
@echo on
setlocal enabledelayedexpansion
::要正确得到含有!的字符ILoveYou!@
set para1=ILoveYou!@
set para2=ILoveYou^!@
set para3=ILoveYou^^!@ ::只有这个是正确的
echo %para1%
echo %para2%
echo %para3%
echo !para1!
echo !para2!
echo !para3! ::只有这种引用正确的,显示ILoveYou!@
endlocal
如下图所示
方法二
用双引号将赋值语句括进去,并在!前加^, 如要得到ABC!E 可以
“para=ABC^!E” 就将 ABC!E赋值给变量para了,用不用延迟扩展都行(用延迟扩展就要 !para! 引用)。
@echo off
set "para=ABC^!E"
echo %para%
或这样。
@echo off
setlocal enabledelayedexpansion
set "para=ABC^!E"
echo !para!
endlocal