无忧启动论坛

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

dos中的findramd是不是有时候能同时返回两个值

[复制链接]
跳转到指定楼层
1#
发表于 2016-10-12 11:22:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
假如CONFIG.SYS的[COMMON]存在devicehigh=ramdrive.sys /E 2048
磁盘只有一个分区 C
启动dos,执行:

findramd

IF ERRORLEVEL  3 echo ok
ok   显示了ok
IF ERRORLEVEL  4 echo ok
ok   显示了ok

说明了执行了findramd后,能同时返回两个值

ERRORLEVEL返回值为3,是不是表示存在虚拟盘
ERRORLEVEL返回值为4,是不是表示存在虚拟盘已存在盘符






2#
发表于 2016-10-12 12:10:40 来自手机 | 只看该作者
本帖最后由 不知 于 2016-10-12 12:31 编辑

一次只能返回一个值,只是值可能是3或4,是3或4第一句成立,是4第二句成立。
回复

使用道具 举报

3#
发表于 2016-10-12 12:19:25 来自手机 | 只看该作者
本帖最后由 不知 于 2016-10-12 12:26 编辑

去输入if /?查看说明,errorlevel的值小于或等于最后一次运行的程序的返回值,都为真。

tmp.png (16.74 KB, 下载次数: 21)

tmp.png
回复

使用道具 举报

4#
发表于 2016-10-12 12:20:44 来自手机 | 只看该作者
所以按楼主的顺序,findramd的返回值为4。
回复

使用道具 举报

5#
发表于 2016-10-12 12:59:21 来自手机 | 只看该作者
可以使用%errorlevel%==X判断精确值。

点评

谢谢回复! 明白了,findramd的实际返回值为4(并不是我认为的又是3,又是4),IF ERRORLEVEL 3中的3小于了4,所以执行IF ERRORLEVEL 3 echo ok后,会显示ok -------------------------------------------------  详情 回复 发表于 2016-10-12 15:03
回复

使用道具 举报

6#
 楼主| 发表于 2016-10-12 15:03:44 | 只看该作者
不知 发表于 2016-10-12 12:59
可以使用%errorlevel%==X判断精确值。

谢谢回复!
明白了,findramd的实际返回值为4(并不是我认为的又是3,又是4),IF ERRORLEVEL  3中的3小于了4,所以执行IF ERRORLEVEL  3 echo ok后,会显示ok
----------------------------------------------------------------------------------------------------------------------------------------------------
分析了一天,我也没整明白dos启动盘中的SETRAMD.BAT和AUTOEXEC.BAT是怎样判断出虚拟磁盘的盘符的,看了你的回复,现在渐渐明白了
----------------------------------------------------------------------------------------------------------------------------------------------------
纯dos中好像不能用%errorlevel%吧

前面我说的"findramd的实际返回值为4"是根据SETRAMD.BAT和AUTOEXEC.BA运行完后由得到的虚拟盘符D后,又从AUTOEXEC.BA中的set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C找出了返回值是4

好像虚拟盘符在加载CONFIG.SYS时就已经分配了盘符,不知为什么还要在SETRAMD.BAT中来判断

点评

可能在加载config.sys时没有指定盘符或无法指定盘符,所以需要确定虚拟盘盘符。  详情 回复 发表于 2016-10-12 18:13
回复

使用道具 举报

7#
发表于 2016-10-12 16:14:34 来自手机 | 只看该作者
用%errolevel%行不行?

点评

我刚才测试了在纯dos用%errolevel%中不行,在windows环境中才行  详情 回复 发表于 2016-10-12 17:47
回复

使用道具 举报

8#
 楼主| 发表于 2016-10-12 17:47:03 | 只看该作者
不知 发表于 2016-10-12 16:14
用%errolevel%行不行?

我刚才测试了在纯dos用%errolevel%中不行,在windows环境中才行

点评

看来DOS还是太老了,只有从大到小依次判断erorlevel。  详情 回复 发表于 2016-10-12 18:14
回复

使用道具 举报

9#
发表于 2016-10-12 18:13:11 | 只看该作者
yjqd 发表于 2016-10-12 15:03
谢谢回复!
明白了,findramd的实际返回值为4(并不是我认为的又是3,又是4),IF ERRORLEVEL  3中的3小 ...

可能在加载config.sys时没有指定盘符或无法指定盘符,所以需要确定虚拟盘盘符。
回复

使用道具 举报

10#
发表于 2016-10-12 18:14:43 | 只看该作者
yjqd 发表于 2016-10-12 17:47
我刚才测试了在纯dos用%errolevel%中不行,在windows环境中才行

看来DOS还是太老了,只有从大到小依次判断erorlevel。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-9 22:45

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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