Board logo

标题: 请教ERRORLEVEL错误返回代号 [打印本页]

作者: dosz     时间: 2006-2-18 10:08    标题: 请教ERRORLEVEL错误返回代号

===============执行.bat===============
@echo off
copy C:\BOOT.INI>nul
if errorlevel 1 echo 执行失败
if errorlevel -1 echo 执行成功
if errorlevel -1 echo 被用户中断等
pause
exit
===============================
请教 ERRORLEVEL错误返回代号
如执行成功,执行失败,或被用户中断等
作者: DOSforever     时间: 2006-2-20 00:53
没怎么研究过 CMD 下的命令行环境,象 COPY 这样的内部命令也有退出码吗?
作者: willsort     时间: 2006-2-20 10:13
Re DOSforever:

      WinNT CMD 确实与 Win9x COMMAND/MSDOS 有别,CMD下的内部命令均回返回 ERRORLEVEL ,大多情况下,0 为成功,1 为失败。

Re dosz:

      if errorlevel 是不会正确识别并进行负数错误返回码判断的,它会将负号作为普通的ASCII字符进行识别,与0~9一样,使用同样的算法进行处理和判断。如下:

     “-”的ASCII码为45,减去“0”的ASCII码48,因为是单字节无符号减,得45-48+256=253,再乘10,得2530,因此结果存于单字节,再对256求余,得226;“1”的ASCII码为49,减去“0”的ASCII码48,得1,加227。

      因此,if errorlevel -1 与 if errorlevel 227 完全等效。同理,if errorlevel -2 与 if errorlevel 228 完全等效,诸如此类。

[ Last edited by willsort on 2006-2-20 at 10:19 ]
作者: dosz     时间: 2006-3-3 20:39
谢谢版主回复.
"大多情况下,0 为成功,1 为失败。"我知道了
可以用 "ECHO %errorlevel%"来显示错误返回码