windows批处理中的errorlevel在IF逻辑中无效

比如if0==0(comand1echo%errorlevel%comand2echo%errorlevel%)上面无论comand1,comand2执行的返回值是怎样的... 比如
if 0 == 0 (
comand1
echo %errorlevel%
comand2
echo %errorlevel%
)
上面无论comand1,comand2执行的返回值是怎样的errorlevel的值都不会变,只有if逻辑结束之后才会改变。如何能在if逻辑中间取得comand执行的返回值,求高手解答,谢谢
展开
 我来答
ch_w_j
2011-05-19 · TA获得超过535个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:264万
展开全部
你问的问题涉及到批处理学习中一个比较基础性的问题--变量延迟,并不是errorlevel在if逻辑中无效,而是你对errorlevel变量的引用采用的是没开启变量延迟情况下的百分号%,根据常识,整个if语句在语法上仅仅是一条语句而已,语句执行过程中errorlevel变量的变化并不能通过%errorlevel%体现,而是应该在开启变量延迟的情况下用!errorlevel!体现,解决方法如下:
@echo off&setlocal enabledelayedexpansion
if 0 == 0 (
comand1
echo !errorlevel!
comand2
echo !errorlevel!
)
另一种解决方法是通过运用call语句的预处理两次原理来解决:
if 0 == 0 (
comand1
call,echo %%errorlevel%%
comand2
call,echo %%errorlevel%%
)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式