无忧启动论坛

标题: 发现纯dos下有的内核命令执行后正确或是错误返回值都是0 [打印本页]

作者: yjqd    时间: 2016-10-14 14:00
标题: 发现纯dos下有的内核命令执行后正确或是错误返回值都是0
dos下有的内核命令执行后正确或是错误返回值都是0:

假如存在分区C:且C中有文件

dir c:

(此处显示了c盘的文件的,只是我没写出来)

if errorlevle 1 echo ok
无显示

if errorlevle 0 echo ok

ok  显示了ok
------------------------
假如不存在分区F:

dir f:

if errorlevle 1 echo ok
无显示

if errorlevle 0 echo ok

ok  显示了ok

为什么上面两种情况都一样呢

如果是在windows环境下dir不存在的分区,错误值会显示是1,而纯dos下正解或错误都是0,这是怎么回事
作者: 2010nmb    时间: 2016-10-14 15:43
楼主应该选个好时辰再试试
作者: 不知    时间: 2016-10-14 16:06
2010nmb 发表于 2016-10-14 15:43
楼主应该选个好时辰再试试

难道是试验结果与楼主的不一样。
作者: 不知    时间: 2016-10-14 16:12
errorlevle 是不是写错了?是errorlevel
作者: yjqd    时间: 2016-10-14 17:59
不知 发表于 2016-10-14 16:12
errorlevle 是不是写错了?是errorlevel

谢谢回复

不好意思,错误返回值应是errorlevel,只是我帖子中写错了,在dos中使用时并没写错
作者: 红毛樱木    时间: 2016-10-14 20:24
我试了windows下返回时正确的。
作者: 不知    时间: 2016-10-14 21:40
使用IF EXIST Path Command行不行?
if exist c:\ echo ok
if exist F:\ echo ok
作者: nttwqz    时间: 2016-10-15 00:43
由于DOS年代久远,一些资料不好查

说两点

1. 并不是每个版本的DOS都支持返回errorlevel值,微软的文章说的好像是6.0以上的版本,比如7.0、7.1才支持
2. 经下载测试,不是每个7.1版本的启动软盘都支持返回errorlevel值,楼主可以运行echo %errorlevel%测试,先确定能不能支持,再说对不对的问题
作者: yjqd    时间: 2016-10-15 08:35
不知 发表于 2016-10-14 21:40
使用IF EXIST Path Command行不行?
if exist c:\ echo ok
if exist F:\ echo ok

if exist c:\ echo ok
if exist F:\ echo ok
执行后两者都无任何显示,对于盘符if exist不起作用

对于盘符下的文件if exist能起作用,比如:
if exist c:\FDISK.EXE  echo ok
ok   显示了ok

作者: 不知    时间: 2016-10-15 08:38
yjqd 发表于 2016-10-15 08:35
if exist c:\ echo ok
if exist F:\ echo ok
执行后两者都无任何显示,对于盘符if exist不起作用

看来这个也只有在windows下。
作者: yjqd    时间: 2016-10-15 08:38
nttwqz 发表于 2016-10-15 00:43
由于DOS年代久远,一些资料不好查

说两点

我下载了超级联盟的dos7.1
不支持echo %errorlevel%



作者: nttwqz    时间: 2016-10-15 12:12
yjqd 发表于 2016-10-15 08:38
我下载了超级联盟的dos7.1
不支持echo %errorlevel%

既然都不支持,那你用if errorlevel 也就没有意义了……
作者: pseudo    时间: 2016-10-15 14:17
if exist c:\ echo ok

if exist c:\nul echo ok
有时不同

作者: yjqd    时间: 2016-10-15 14:46
pseudo 发表于 2016-10-15 14:17
if exist c:\ echo ok

if exist c:\nul echo ok


谢谢回复
果然如此:
假如C盘存在并有文件
if exist c:\ echo ok
无显示
if exist c:\nul echo ok
显示ok

if exist c:\nul这种形式对存在的软盘、硬盘和虚拟磁盘都有效(不管里面有没有文件)

而对存在的光驱(不管里面有没有文件)和不存在的分区没有效

以上只是自己实际情况的实测,不代表普遍




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3