回复 6# ivor
单就 xx || echo %errorlevel% 这一句来说吧,%errorlevel% 是在 cmd 对整行进行预处理时就解释了的,而不是在 echo %errorlevel% 这句预处理时解释的,所以你看到的 errorlevel 是执行 xx 之前的:- xx || echo %errorlevel%
- xx || echo %errorlevel%
- ::同样的两句,显示的 errorlevel 却不同,原因就在于这里的 errorlevel 都是隔夜饭,不是新鲜出炉的
复制代码 可以改用变量延迟来解释变量:- xx || cmd /v /c echo !errorlevel!
- ::%errorlevel% 与 !errorlevel! 的区别在于,前者是以行(更确切地说应该是复合语句)为单位解释的,取到的是上一行运行结束后的变量,而后者是以一条命令为单位临时解释的,所以取到的是上一条命令的结果
复制代码
|