中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-14 01:47
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS学习入门 & 精彩文章 (教学室) » 请教ERRORLEVEL错误返回代号
可打印版本  935 / 3
第1楼 dosz 发表于 2006-02-18 10:08
中级用户 发帖 188 积分 396 来自 上海
请教ERRORLEVEL错误返回代号
===============执行.bat===============
@echo off
copy C:\BOOT.INI>nul
if errorlevel 1 echo 执行失败
if errorlevel -1 echo 执行成功
if errorlevel -1 echo 被用户中断等
pause
exit
===============================
请教 ERRORLEVEL错误返回代号
如执行成功,执行失败,或被用户中断等
第2楼 DOSforever 发表于 2006-02-20 00:53
金牌会员 发帖 2,239 积分 4,639
没怎么研究过 CMD 下的命令行环境,象 COPY 这样的内部命令也有退出码吗?
第3楼 willsort 发表于 2006-02-20 10:13
元老会员 发帖 1,512 积分 4,432
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 ]
第4楼 dosz 发表于 2006-03-03 20:39
中级用户 发帖 188 积分 396 来自 上海
谢谢版主回复.
"大多情况下,0 为成功,1 为失败。"我知道了
可以用 "ECHO %errorlevel%"来显示错误返回码
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023