批处理 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,内容如下:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 1 ECHO 文件拷贝失败
IF ERRORLEVEL 0 ECHO 成功拷贝文件
然后执行文件:
C:\>TEST4
如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。
IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。
因此下面的批处理文件是错误的:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO 成功拷贝文件
IF ERRORLEVEL 1 ECHO 未找到拷贝文件
IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作
IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作
IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误
无论拷贝是否成功,后面的:
未找到拷贝文件
用户通过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 在提示“proceed with format(y/n)?”下用户键入n结束
xcopy
0 成功拷贝文件
1 未找到拷贝文件
2 用户通过ctrl-c中止拷贝操作
4 预置错误阻止文件拷贝操作
5 拷贝过程中写盘错误
批处理 IF-ERRORLEVEL使用方法相关推荐
- 几种隐藏批处理运行窗口的方法
(1)通过批处理命令实现.缺点:会看到一个窗口一闪而逝.优点:简单,直接添加即可. @echo off if "%1"=="h" goto begin star ...
- win7系统定时删除数据的批处理命令_Win7系统批处理删除文件的方法
平常使用电脑过程中,我们可以使用批处理命令,轻松删除文件.批处理文件是扩展名为·bat 或·cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行.接下来,我们就 ...
- DOS批处理静默执行的方法(无窗口)
方法1: 使用批处理在执行时可以隐藏命令行显示的功能来实现. 创建如下的批处理: 代码示例: set ws=wscript.createobject("wscript.shell" ...
- 浅谈批处理获取管理员运行权限的几种方法
很多用了Win10版本系统的人都会发现,Windows对程序的运行权限是控制得更加严格了,即使你将UAC控制放至最低,如果没有特别赋予外来程序管理员运行权限的话,很多程序都会运行出错,包括很多用于系统 ...
- LSMW批处理使用方法(01)_总述及界面说明
一.总述 在SAP系统中,批处理操作有多种方法.如果是对一个事物码(TCODE)进行批处理操作,常用的是LSMW.LSMW全称是Legacy System Migration Workbench.它能 ...
- 批处理bat 延时启动的方法
批处理延时启动的方法有很多 常见的有:ping,VBS等方法,方法很多,优缺点各有不同.经过实验总结如下: 时间间隔精度高,CPU占用率低 代码如下: choice /t 5 /d y /n > ...
- .bat批处理命令的介绍
HUC = = D组 http://www.cnhonkerarmy.com/ 63707869 =====================================开始============ ...
- 批处理常用命令总结和WindowsXP下运行命令使用大全及优化
关于批处理以及批处理常用命令的总结 [ 一.什么是批处理 ] 批处理文件图标 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理.批处理文件的扩展名为 bat . 目前 ...
- 关于批处理以及批处理常用命令的总结
关于批处理以及批处理常用命令的总结 [ 一.什么是批处理 ] 批处理文件图标 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理.批处理文件的扩展名为 bat . 目前 ...
- DOS常用命令与批处理使用大全
一.DOS命令使用规则 1.直接输入"help",运行,就可以列出所有命令及说明. 2.可以使用通配符(? 和 *),?表通配一个字符,*表通配任意字符 *.后缀 指定要查看后缀的 ...
最新文章
- 2022-2028年中国碘矿行业竞争格局分析及市场需求前景报告
- AtCoder AGC034D Manhattan Max Matching (费用流)
- python sort 多级排序_Python sort和class实现多级排序
- 单多晶技术拉锯战升级
- python机器视觉教材_基于Python的机器视觉实验教学平台设计
- Javascript第四章变量的提升和预解析方法流程第四课
- 蓝牙音箱连接成功但没有声音还是电脑的声音
- 金字塔原理读书笔记 一 为什么使用金字塔结构
- torch.sqrt(lhs**2) 与torch.abs(lhs)在pytorch中的差异
- 《编译与反编译技术》—第3章3.1语 法 分 析
- Android开发:一个TextView中设置文字不同字体大小和颜色的2种高效方法
- 如何让vnc控制由默认的twm界面改为gnome?(转)
- 彻底禁用Microsoft Compatibility telemetry
- PHP下制作图灵机器人程序
- 拨测技术在哪些方面应用比较广泛?
- Honeywell EPKS通用中文操作手册
- 地统计工具异常值查询和趋势分析
- Java modifier
- 写了一个新浪微博自动加粉的挂机小工具
- 永磁同步电机矢量控制(四)——速度环 PI 参数整定(二)