Windows batch 代码
@echo on
echo ==============
for %%a in (1,2) do (
cmd /c exit %%a
echo errorlevel=%errorlevel%
)
运行结果:
errorlevel=0
errorlevel=0
以上这段代码运行结果让我非常疑惑。为啥只跟 for 循环体外的命令结果有关,仿佛 for 运行那一刻其循环体内的代码中的变量值就已经固定下了。但如果把 for 看成一个命令行程序的话,输入的变量参数在运行 for 之前就固定下了,就像其他命令行程序一样,倒也说得通。
补充说明
cmd /c exit 1
这行代码只是用来替代实际环境中用的命令行程序,以一个更直观的方式返回 exit code ,更容易看到问题所在,也可以换成其它的命令行程序。
可以进入 cmd 交互式模式输入以下两行以验证效果:
cmd /c exit 1
echo %errorlevel%
用延迟变量或者call