中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-18 09:25
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (结了)if判断errorlevel的问题 查看 1,186 回复 13
楼 主 (结了)if判断errorlevel的问题 发表于 2009-04-09 12:37 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
@echo off
net
IF %ERRORLEVEL% == 1 echo net user 执行失败了!


奇怪,执行成功后仍然显示执行失败
也许IF不能作出判断,或者有其他办法
************
************
邮箱在这里lcleft@163.com

[ Last edited by lcleft on 2009-4-14 at 23:22 ]
2 发表于 2009-04-09 13:08 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
UID 135147
性别 男
来自 广西
状态 离线
没什么好奇怪的,
成功,不成功都执行一次,
在命令后面加上这行:echo %errorlevel%&pause
自己多测试几次看看就明白了
精简
=> 个人网志
3 发表于 2009-04-10 02:48 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
求一个IF判断错误码的例子,
最好是可以在CMD下测试

[ Last edited by lcleft on 2009-4-10 at 04:26 ]
4 发表于 2009-04-10 23:41 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于
指定数字的退出代码,指定条件为 true。

IF DEFINED variable command

其中, compare-op 可以是:

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于


@echo off
net usertest
set el=%ERRORLEVEL%
IF "%el%"=="0" echo net user 执行失败了!
pause

要么直接用EQU,NEQ这种……
要么用个变量保存下errorlevel

类型要一致。都是数字比较,或者字符串比较。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2009-04-11 11:13 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
不太明白4楼的意思,也没有解决
不明白第二行net usertest 这个命令的意思
倒数第二行的net user这个命令也不清楚
当我在echo net user前加上&&时,看到的是似乎IF并没有做出判断

[ Last edited by lcleft on 2009-4-11 at 11:17 ]
6 发表于 2009-04-12 00:59 ·  中国 四川 南充 营山县 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
7 发表于 2009-04-13 01:41 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
还是不行,
按照版主的代码执行,还是没有显示失败
8 发表于 2009-04-13 02:01 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
UID 135147
性别 男
来自 广西
状态 离线
你首先要知道执行该命令将会出现的返回码是什么才能进行编程的。
给一个批,自己运行测一下。

@echo off
echo.********测试命令回返码的批处理**********
:lp
set in=
echo.
set/p in=输入你的要执行的命令如:net usertest :
if "%in%"=="" (goto :eof) else (%in%)
echo ********************************
echo.此次执行的返回码是:%errorlevel%
echo ********************************
goto :lp
精简
=> 个人网志
9 发表于 2009-04-13 02:27 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
@echo off
net usertest
IF ERRORLEVEL 3 echo net user 执行失败了!(ERRORLEVEL 3)
IF ERRORLEVEL 2 echo net user 执行失败了!(ERRORLEVEL 2)
IF ERRORLEVEL 1 echo net user 执行失败了!(ERRORLEVEL 1)
pause
自己看下ERRORLEVEL是几 然后自己修改下
10 发表于 2009-04-14 03:12 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
鸣谢
8楼的代码
楼主的关爱
以及前面的无名英雄
郑重宣布,
一知半解中
希望有大侠或女士弄个SET的用法啊,俺的EMAIL----lcleft@163.
com

[ Last edited by lcleft on 2009-4-14 at 03:23 ]
11 Re 10楼 发表于 2009-04-14 05:00 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
本版搜索“set”
12 发表于 2009-04-20 10:59 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
漠视群
13 发表于 2009-04-21 04:17 ·  中国 江西 吉安 电信
初级用户
★★
积分 78
发帖 64
注册 2008-08-29 11:09
UID 124464
性别 男
状态 离线
var=%%random%%%%%%2
请问下这句什么意思
%random%是随即数的意思,但是这里这么多%后面还加个2不知道什么意思
14 发表于 2009-04-26 12:34 ·  中国 湖南 长沙 电信
社区乞丐
积分 -31
发帖 32
注册 2009-03-12 08:41
UID 141109
性别 男
状态 离线
我也不知道啊
去搜索一下看看
论坛跳转: