无忧启动论坛

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

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

  [复制链接]
跳转到指定楼层
1#
发表于 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,这是怎么回事
2#
发表于 2016-10-14 15:43:07 | 只看该作者
楼主应该选个好时辰再试试

点评

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

使用道具 举报

3#
发表于 2016-10-14 16:06:58 来自手机 | 只看该作者
2010nmb 发表于 2016-10-14 15:43
楼主应该选个好时辰再试试

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

使用道具 举报

4#
发表于 2016-10-14 16:12:45 来自手机 | 只看该作者
errorlevle 是不是写错了?是errorlevel

点评

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

使用道具 举报

5#
 楼主| 发表于 2016-10-14 17:59:07 | 只看该作者
不知 发表于 2016-10-14 16:12
errorlevle 是不是写错了?是errorlevel

谢谢回复

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

使用道具 举报

6#
发表于 2016-10-14 20:24:10 | 只看该作者
我试了windows下返回时正确的。
回复

使用道具 举报

7#
发表于 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
回复

使用道具 举报

8#
发表于 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
回复

使用道具 举报

9#
 楼主| 发表于 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
回复

使用道具 举报

10#
发表于 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下。
回复

使用道具 举报

11#
 楼主| 发表于 2016-10-15 08:38:34 | 只看该作者
nttwqz 发表于 2016-10-15 00:43
由于DOS年代久远,一些资料不好查

说两点

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


回复

使用道具 举报

12#
发表于 2016-10-15 12:12:57 来自手机 | 只看该作者
yjqd 发表于 2016-10-15 08:38
我下载了超级联盟的dos7.1
不支持echo %errorlevel%

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

使用道具 举报

13#
发表于 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
回复

使用道具 举报

14#
 楼主| 发表于 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, 2025-2-23 04:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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