dos批处理中开启延迟变量后计算错误问题, 为啥会这样呢?

脚本很简单,就是判断两个数是否相同, 如果不开延迟变量结果是对的,但开启延迟变量结果就是错的.

@echo off
setlocal enabledelayedexpansion

set /p a="请输入第一个数字:"
set /p b="请输入第二个数字:"

if %a% == %b% (echo "a=b") else (echo "a!=b")

pause

(echo "a!=b")要改成(echo "a^!=b")
因为开了变量延迟后,!会作为for/if之类子句中的变量引用字符,也就是!会替代%了,所以报错。加上^表示后面的字符就是原来的字符,不要cmd环境做“翻译”。
温馨提示:答案为网友推荐,仅供参考