批处理,errorlevel的判断
我想做下面个事情,但是发现errorlevel不好用了@echooffdir>c:\1.txtifEXISTc:\1.txt(dsfadsfecho%errorlevel...
我想做下面个事情,但是发现errorlevel不好用了
@echo off
dir > c:\1.txt
if EXIST c:\1.txt (
dsfadsf
echo %errorlevel%
)
asdfasdf
echo %errorlevel%
pause
1判断文件存在
2存在则作进一步处理,如果报错则推出
问题出现了,括号里面的errorlevel始终是0,括号外面正常
如何解决该问题
谢谢 展开
@echo off
dir > c:\1.txt
if EXIST c:\1.txt (
dsfadsf
echo %errorlevel%
)
asdfasdf
echo %errorlevel%
pause
1判断文件存在
2存在则作进一步处理,如果报错则推出
问题出现了,括号里面的errorlevel始终是0,括号外面正常
如何解决该问题
谢谢 展开
3个回答
展开全部
(括号里面的errorlevel始终是0)
这是当然了。因为:
if EXIST c:\1.txt (
dsfadsf
echo %errorlevel%
)
这是一条命令。
如果没有启动变量延迟的话,%errorlevel%所判断的就是if上一句命令:dir > c:\1.txt
返回值,因为一定执行成功,当然errorlevel也就始终为0。
要想解决这个问题。
启动变量延迟就可以解决。
代码如下:
@echo off
setlocal enabledelayedexpansion
dir > c:\1.txt
if EXIST c:\1.txt (
dsfadsf
echo !errorlevel!
)
asdfasdf
echo %errorlevel%
pause
这是当然了。因为:
if EXIST c:\1.txt (
dsfadsf
echo %errorlevel%
)
这是一条命令。
如果没有启动变量延迟的话,%errorlevel%所判断的就是if上一句命令:dir > c:\1.txt
返回值,因为一定执行成功,当然errorlevel也就始终为0。
要想解决这个问题。
启动变量延迟就可以解决。
代码如下:
@echo off
setlocal enabledelayedexpansion
dir > c:\1.txt
if EXIST c:\1.txt (
dsfadsf
echo !errorlevel!
)
asdfasdf
echo %errorlevel%
pause
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
if exist c:\1.txt (
echo 文件存在
) else (
echo 文件不存在
pause>nul
exit
)
pause
用%errorlevel%来干什么 可以用上面这样的方式来判断 不懂 hi我
if exist c:\1.txt (
echo 文件存在
) else (
echo 文件不存在
pause>nul
exit
)
pause
用%errorlevel%来干什么 可以用上面这样的方式来判断 不懂 hi我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
括号里面的errorlevel肯定是0!
因为errorlevel是显示!!!上一次!!!运行结果的正确与否,而你的第一个errorlevel在括号里,在整 个BAT里是排在第三句,他判断的是第二句dir > c:\a.txt这一句的,而不是 dsfadsf,因为errorlevel和 dsfadsf是在一句的!
而在dsfadsf后,if还没有完,这句还没执行完,下面的errorlevel不会去判断!
这样写就可以了
@echo off
dir > c:\1.txt
if EXIST c:\1.txt (
dsfadsf
)
echo %errorlevel%
asdfasdf
echo %errorlevel%
pause
这样子第一个errorlevel才是判断if的!
因为errorlevel是显示!!!上一次!!!运行结果的正确与否,而你的第一个errorlevel在括号里,在整 个BAT里是排在第三句,他判断的是第二句dir > c:\a.txt这一句的,而不是 dsfadsf,因为errorlevel和 dsfadsf是在一句的!
而在dsfadsf后,if还没有完,这句还没执行完,下面的errorlevel不会去判断!
这样写就可以了
@echo off
dir > c:\1.txt
if EXIST c:\1.txt (
dsfadsf
)
echo %errorlevel%
asdfasdf
echo %errorlevel%
pause
这样子第一个errorlevel才是判断if的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询