找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3649|回复: 13

[求助] 发现纯dos下有的内核命令执行后正确或是错误返回值都是0

  [复制链接]
发表于 2016-10-14 14:00:20 | 显示全部楼层 |阅读模式
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,这是怎么回事
发表于 2016-10-14 15:43:07 | 显示全部楼层
楼主应该选个好时辰再试试

点评

难道是试验结果与楼主的不一样。  详情 回复 发表于 2016-10-14 16:06
回复

使用道具 举报

发表于 2016-10-14 16:06:58 来自手机 | 显示全部楼层
2010nmb 发表于 2016-10-14 15:43
楼主应该选个好时辰再试试

难道是试验结果与楼主的不一样。
回复

使用道具 举报

发表于 2016-10-14 16:12:45 来自手机 | 显示全部楼层
errorlevle 是不是写错了?是errorlevel

点评

谢谢回复 不好意思,错误返回值应是errorlevel,只是我帖子中写错了,在dos中使用时并没写错  详情 回复 发表于 2016-10-14 17:59
回复

使用道具 举报

 楼主| 发表于 2016-10-14 17:59:07 | 显示全部楼层
不知 发表于 2016-10-14 16:12
errorlevle 是不是写错了?是errorlevel

谢谢回复

不好意思,错误返回值应是errorlevel,只是我帖子中写错了,在dos中使用时并没写错
回复

使用道具 举报

发表于 2016-10-14 20:24:10 | 显示全部楼层
我试了windows下返回时正确的。
回复

使用道具 举报

发表于 2016-10-14 21:40:28 | 显示全部楼层
使用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:35
回复

使用道具 举报

发表于 2016-10-15 00:43:08 | 显示全部楼层
由于DOS年代久远,一些资料不好查

说两点

1. 并不是每个版本的DOS都支持返回errorlevel值,微软的文章说的好像是6.0以上的版本,比如7.0、7.1才支持
2. 经下载测试,不是每个7.1版本的启动软盘都支持返回errorlevel值,楼主可以运行echo %errorlevel%测试,先确定能不能支持,再说对不对的问题

点评

我下载了超级联盟的dos7.1 不支持echo %errorlevel%  详情 回复 发表于 2016-10-15 08:38
回复

使用道具 举报

 楼主| 发表于 2016-10-15 08:35:27 | 显示全部楼层
不知 发表于 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

点评

看来这个也只有在windows下。  详情 回复 发表于 2016-10-15 08:38
回复

使用道具 举报

发表于 2016-10-15 08:38:13 来自手机 | 显示全部楼层
yjqd 发表于 2016-10-15 08:35
if exist c:\ echo ok
if exist F:\ echo ok
执行后两者都无任何显示,对于盘符if exist不起作用

看来这个也只有在windows下。
回复

使用道具 举报

 楼主| 发表于 2016-10-15 08:38:34 | 显示全部楼层
nttwqz 发表于 2016-10-15 00:43
由于DOS年代久远,一些资料不好查

说两点

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


点评

既然都不支持,那你用if errorlevel 也就没有意义了……  详情 回复 发表于 2016-10-15 12:12
回复

使用道具 举报

发表于 2016-10-15 12:12:57 来自手机 | 显示全部楼层
yjqd 发表于 2016-10-15 08:38
我下载了超级联盟的dos7.1
不支持echo %errorlevel%

既然都不支持,那你用if errorlevel 也就没有意义了……
回复

使用道具 举报

发表于 2016-10-15 14:17:29 | 显示全部楼层
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这种形式对存在软盘、硬盘和虚拟磁盘都有效(不管里面有没有文件) 而对存在的光  详情 回复 发表于 2016-10-15 14:46
回复

使用道具 举报

 楼主| 发表于 2016-10-15 14:46:17 | 显示全部楼层
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这种形式对存在的软盘、硬盘和虚拟磁盘都有效(不管里面有没有文件)

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-9-19 17:33

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表