无忧启动论坛

标题: dos中的findramd是不是有时候能同时返回两个值 [打印本页]

作者: yjqd    时间: 2016-10-12 11:22
标题: dos中的findramd是不是有时候能同时返回两个值
假如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,是不是表示存在虚拟盘已存在盘符







作者: 不知    时间: 2016-10-12 12:10
本帖最后由 不知 于 2016-10-12 12:31 编辑

一次只能返回一个值,只是值可能是3或4,是3或4第一句成立,是4第二句成立。
作者: 不知    时间: 2016-10-12 12:19
本帖最后由 不知 于 2016-10-12 12:26 编辑

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

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

tmp.png

作者: 不知    时间: 2016-10-12 12:20
所以按楼主的顺序,findramd的返回值为4。
作者: 不知    时间: 2016-10-12 12:59
可以使用%errorlevel%==X判断精确值。
作者: yjqd    时间: 2016-10-12 15:03
不知 发表于 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中来判断
作者: 不知    时间: 2016-10-12 16:14
用%errolevel%行不行?
作者: yjqd    时间: 2016-10-12 17:47
不知 发表于 2016-10-12 16:14
用%errolevel%行不行?

我刚才测试了在纯dos用%errolevel%中不行,在windows环境中才行
作者: 不知    时间: 2016-10-12 18:13
yjqd 发表于 2016-10-12 15:03
谢谢回复!
明白了,findramd的实际返回值为4(并不是我认为的又是3,又是4),IF ERRORLEVEL  3中的3小 ...

可能在加载config.sys时没有指定盘符或无法指定盘符,所以需要确定虚拟盘盘符。
作者: 不知    时间: 2016-10-12 18:14
yjqd 发表于 2016-10-12 17:47
我刚才测试了在纯dos用%errolevel%中不行,在windows环境中才行

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




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