标题: 请教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%"来显示错误返回码