手机
当前位置:查字典教程网 >脚本专栏 >DOS/BAT >IF-ERRORLEVEL使用方法
IF-ERRORLEVEL使用方法
摘要:今天远程一个客户,发现他的服务器会不定时自动断开网络,导致客户端连接不了服务端,但是重启服务以后又恢复正常,初步判断可能是由于某个系统服务与...

今天远程一个客户,发现他的服务器会不定时自动断开网络,导致客户端连接不了服务端,但是重启服务以后又恢复正常,初步判断可能是由于某个系统服务与winpacp有冲突,建议用户恢复操作系统,他想等晚上再开始操作,今天就只好一直运行个ping,发现timed out就手动重启服务。我记得if可以利用程序的返回值作为判断,就帮他写了这个脚本:

复制代码 代码如下:

@echo off

: p

ping 61.152.XX.XX

IF ERRORLEVEL 1 goto aa

IF ERRORLEVEL 0 goto bb

:aa

echo 正在重启软件服务...

net stop MSSQLSERVER

net start MSSQLSERVER

goto p

:bb

echo 继续ping中。。。

goto p

这段命令的作用是,ping 61.152.XX.XX这个IP,如果ping不通则重启mssql服务,然后继续ping,如果能够ping通,还是继续ping...

我们都知道if是命令行下的一个条件判断语句,ERRORLEVEL是它的一个参数,翻译过来就是“错误返回码”的意思,它的作用是判断前一条命令的错误返回值,然后和定义的字符值进行比较,再决定进行什么动作。

格式是这样:

if ERRORLEVEL nubmer commend

例:if ERRORLEVEL 1 echo 返回值等于1

那么大家就要问了,我怎么获取到前一个命令的返回值呢?

方法很简单,拿ping来说,我们先运行一个ping 127.0.0.1

运行结果是Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

这时候我们输入,echo %errorlevel%,就可以看到返回值是0,

然后我们在ping一个不存在的ip,比如192.192.192.192

ping命令显示 Request timed out.。

ok,我们在用echo %errorlevel%查一下返回值是多少。

现在变成了1。

你也可以用这个方法来查询其他命令的返回值,比如copy、dir等等。

当然if ERRORLEVEL对数值的比较方法不仅仅限于等于。在微软的帮助中我们可以看到:

IF %ERRORLEVEL% LEQ 1 goto okay

这里的LEQ表示“小于等于”,全部的比较参数如下:

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

如有错误,感谢指正。

IF-ERRORLEVEL

建立TEST4.BAT,内容如下:

@ECHOOFF

XCOPYC:AUTOEXEC.BATD:

IFERRORLEVEL1ECHO文件拷贝失败

IFERRORLEVEL0ECHO成功拷贝文件

然后执行文件:

C:>TEST4

如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。

IFERRORLEVEL是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。

因此下面的批处理文件是错误的:

@ECHOOFF

XCOPYC:AUTOEXEC.BATD:

IFERRORLEVEL0ECHO成功拷贝文件

IFERRORLEVEL1ECHO未找到拷贝文件

IFERRORLEVEL2ECHO用户通过ctrl-c中止拷贝操作

IFERRORLEVEL3ECHO预置错误阻止文件拷贝操作

IFERRORLEVEL4ECHO拷贝过程中写盘错误

无论拷贝是否成功,后面的:

未找到拷贝文件

用户通过ctrl-c中止拷贝操作

预置错误阻止文件拷贝操作

拷贝过程中写盘错误

都将显示出来。

以下就是几个常用命令的返回值及其代表的意义:

backup

0备份成功

1未找到备份文件

2文件共享冲突阻止备份完成

3用户用ctrl-c中止备份

4由于致命的错误使备份操作中止

diskcomp

0盘比较相同

1盘比较不同

2用户通过ctrl-c中止比较操作

3由于致命的错误使比较操作中止

4预置错误中止比较

diskcopy

0盘拷贝操作成功

1非致命盘读/写错

2用户通过ctrl-c结束拷贝操作

3因致命的处理错误使盘拷贝中止

4预置错误阻止拷贝操作

format

0格式化成功

3用户通过ctrl-c中止格式化处理

4因致命的处理错误使格式化中止

5在提示“proceedwithformat(y/n)?”下用户键入n结束

xcopy

0成功拷贝文件

1未找到拷贝文件

2用户通过ctrl-c中止拷贝操作

4预置错误阻止文件拷贝操作

5拷贝过程中写盘错误

【IF-ERRORLEVEL使用方法】相关文章:

在批处理文件中使用参数的方法

批处理变量应用方法

DOS中判断进程是否存在的方法

DOS下内存的配置方法

使用regini.exe修改注册表命令

DOS下网络浏览器的使用方法

cmd SETLOCAL使用介绍

在DOS下使用长文件名的方法

secedit.exe本地安全策略命令使用方法

Setver、Share、Subst命令的使用方法

精品推荐
分类导航