![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 23:56 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » ERRORLEVEL请教? |
| 可打印版本 1,589 / 12 |
| 第1楼 wordexport | 发表于 2007-10-04 21:39 |
| 初级用户 发帖 42 积分 87 | |
|
ERRORLEVEL请教? 我想问一下ERRORLEVEL是命令执行后的返回退出值,这具体怎么解释啊。什么意思啊?譬如call set "c=%%a:00-14-78-42-93-7d=*%%" 这句命令有退出值吗?是多少呢?
|
|
| 第2楼 wordexport | 发表于 2007-10-04 21:42 |
| 初级用户 发帖 42 积分 87 | |
|
请现身指教
|
|
| 第3楼 wordexport | 发表于 2007-10-04 21:47 |
| 初级用户 发帖 42 积分 87 | |
|
echo off
dir z: rem 如果退出代码为1(不成功)就跳至标题1处执行 IF ERRORLEVEL 1 goto 1 rem 如果退出代码为0(成功)就跳至标题0处执行 IF ERRORLEVEL 0 goto 0 :0 echo 命令执行成功! Rem 程序执行完毕跳至标题exit处退出 goto exit :1 echo 命令执行失败! Rem 程序执行完毕跳至标题exit处退出 goto exit :exit Rem 这里是程序的出口 这段代码执行了dir z:后返回一个什么值呢就是0或1吗那么是不是每条命令执行后都会返回一个退回值呢? |
|
| 第4楼 wordexport | 发表于 2007-10-04 21:48 |
| 初级用户 发帖 42 积分 87 | |
|
请高手指教!先道谢了。
|
|
| 第5楼 lxmxn | 发表于 2007-10-04 22:31 |
| 版主 发帖 4,938 积分 11,386 | |
|
用%ERRORLEVEL%来查看上个命令的返回值。
通常%ERRORLEVEL%值为0表示命令成功执行完,若大于等于1,表示命令执行失败或者出错。 其它的请搜索论坛,以前很多讨论。 |
|
| 第6楼 wordexport | 发表于 2007-10-04 22:36 |
| 初级用户 发帖 42 积分 87 | |
|
谢谢版主 !为什么我用set ERRORLEVEL 不能看它的返回值呢
|
|
| 第7楼 wudixin96 | 发表于 2007-10-04 22:48 |
| 银牌会员 发帖 931 积分 1,928 | |
|
用echo %errorlevel%查看
|
|
| 第8楼 wordexport | 发表于 2007-10-04 23:00 |
| 初级用户 发帖 42 积分 87 | |
Originally posted by wudixin96 at 2007-10-4 10:48 PM: 谢谢你的指教我知道可以用echo %errorlevel% 看返回值但是我原先认为errorlevel是个变量应该可以用set errorlevel 来看它的值,但是实践证明并非如此 那我就不明白了errorlevel不是一个变量吗 |
|
| 第9楼 wordexport | 发表于 2007-10-04 23:03 |
| 初级用户 发帖 42 积分 87 | |
|
我看过一篇文章上面说它是系统变量啊 为什么像%systemdrive%的能显示但是set errorlevel不能显示呢?
|
|
| 第10楼 wordexport | 发表于 2007-10-04 23:12 |
| 初级用户 发帖 42 积分 87 | |
|
顶一下.
|
|
| 第11楼 lxmxn | 发表于 2007-10-05 00:24 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re wordexport:
可以这么理解吧: set中的部分变量都可以叫做“环境变量”,“环境变量”的主要作用是在程序运行前提供一些可供利用的环境选项,这些不是在程序运行之后才设定的,而是之前就设定好的,它们的值通常是不变化的。 而errorlevel可以理解成程序或者命令运行之后的一个返回值(ExitCode),通过这个返回值可以粗略判断程序的运行状态(是正常执行还是有错误出现),因此这个值是随着执行的命令的变化而变化的,就因这些和环境变量的不同,所以你set errorlevel得不到它的值吧。至于到底为什么,我也不知道,微软知道。 还有一个建议就是,判断程序的返回值时,最好是用“if errorlevel ExitCode”的格式,因为errorlevel还可以被定义成一个变量,此时如果用%Errorlevel%来判断的话,就不是ExitCode了,而是你定义的变量%errorlevel%的值了,这样就会导致判断错误而使程序流程“走偏”。 |
|
| 第12楼 knoppix7 | 发表于 2007-10-05 09:55 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
Originally posted by wordexport at 2007-10-4 10:36 PM: SET得帮助写的很明白: 如果命令扩展名被启用,有几个动态环境变量可以被扩展,但 不会出现在 SET 显示的变量列表中。每次变量数值被扩展时, 这些变量数值都会被动态计算。如果用户用这些名称中任何 一个定义变量,那个定义会替代下面描述的动态定义: %CD% - 扩展到当前目录字符串。 %DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。 %TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。 %RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。 %ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。 %CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。 %CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。 |
|
| 第13楼 wordexport | 发表于 2007-10-05 09:56 |
| 初级用户 发帖 42 积分 87 | |
|
谢谢!又学到了
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |