批处理的ERRORLEVEL number问题不懂

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:21:45
先看代码:
@echo off
dir z:
rem 如果为0(成功)就跳至标题0处执行
IF ERRORLEVEL 0 goto 0
REM 如果码为1(不成功)就跳至标题1处执行
IF ERRORLEVEL 1 goto 1
:0
echo 命令执行成功!
Rem 程序执行完毕跳至标题C处退出
goto C
:1
echo 命令执行失败!
Rem 程序执行完毕跳至标题C处退出
goto C
:C
PAUSE

我电脑里没有z盘 运行提示:系统找不到指定的路径 命令执行成功
我把dir z:改为dir c: 运行提示C盘的描述 和命令执行成功
这到底是怎么搞的 那个0和1到底是怎么来的怎么定义的
问题是这样 如果命令执行成功 或者失败的时候 返回值分别是多少 为什么会是这些值 是系统规定的吗

@echo off
dir z:
IF ERRORLEVEL 1 goto 1
IF ERRORLEVEL 0 goto 0
goto C
:0
echo 命令执行成功!
goto C
:1
echo 命令执行失败!
goto C

:C
echo 判断ERRORLEVEL返回号应该由高到低
PAUSE

或者
@echo off
dir c:
set "err=%ERRORLEVEL%"
IF "%err%"=="0" goto 0
IF "%err%"=="1" goto 1
goto C
:0
echo 命令执行成功!
goto C
:1
echo 命令执行失败!
goto C

:C
echo 将ERRORLEVEL返回号定义到一个变量由if判断
PAUSE

补充回答:返回值是多少在程序执行完后用echo %ERRORLEVEL%来查看该值, 每个命令基本返回值0或1(0成功1失败)特别是内部命令,不能一概的说是系统规定的,而是命令所指定的,第三方命令(外部命令)会提供多个甚至几十个返回值但最多 256±1 个返回值,各命令的返回值含义可能各不相同,其返回值含义及用法在此程序开发者原始自述文中有说明。

举例:
xcopy test.txt y:
if errorlevel 5 echo 出现了磁盘写入错误
if errorlevel 4 echo 出现了初始化错误
if errorlevel 2 echo 用户按CTRL+C终止
if errorlevel 1 echo 文件复制失败
if errorlevel 0 echo 文件复制成功

x