...
if %i==2% (
set/p a=
echo %a%
)
...
echo a
语句是为了输出本次读取的a的值,结果可以看到每次读取的a的值都是上次的输入的,而不是本次输入的,比如上次输入的值是1,本次输入的值是2,则本次set/p a=
读取的a的值是1,而不是2!
解决:
开启变量延迟。在文件开头加上setlocal enabledelayedexpansion
,并且变量用叹号!替换百分号%括起来。比如在上面的例子中使用a变量时不能再用echo %a%
,而是echo !a!
参考:
DOS:变量延迟详解(新手推荐)
批处理命令set/p var写在if里面为什么取不到本次输入的var的值,只能取到上一次运行cmd时运行的值