无忧启动论坛

标题: 如何判断B:盘的存在性?(已解决) [打印本页]

作者: pseudo    时间: 2008-4-11 15:27
标题: 如何判断B:盘的存在性?(已解决)
请教大家:
在批处理中如何判断B:盘(或B:盘某文件)的存在性,而当B:盘不存在时不至于失控?

-------------------
已解决:使用lianjiang 大师介绍的DREADY.COM工具。
谢谢lianjiang 大师!
也谢谢lxl1638cxyun002

[ 本帖最后由 pseudo 于 2008-4-12 11:27 AM 编辑 ]
作者: cxyun    时间: 2008-4-11 15:59
试试IF命令吧
IF:条件判断命令。
用法:IF [NOT] EXIST 文件名 命令 [命令参数]
意义:如果[不]存在某个文件将执行某个命令。

[ 本帖最后由 cxyun002 于 2008-4-11 04:00 PM 编辑 ]
作者: pseudo    时间: 2008-4-11 16:45
原帖由 cxyun002 于 2008-4-11 03:59 PM 发表
试试IF命令吧
IF:条件判断命令。
用法:IF [NOT] EXIST 文件名 命令 [命令参数]
意义:如果[不]存在某个文件将执行某个命令。

问题是:如果B:盘不存在,if语句就会出严重错误,提示你插盘之类,要回车按键应答后才能继续,这样批处理就被中途打断(失控),不能完全自动执行了。
作者: lianjiang    时间: 2008-4-11 17:03
找个“DREADY.COM”, 可用于判断指定盘符“可写/只读/不存在”等。
当指定盘符不存在时,费时会多一点。不影响程序的运行的连续性。
作者: cxyun    时间: 2008-4-11 17:05
你这B:盘是软驱还是内存盘.
作者: lxl1638    时间: 2008-4-11 17:44
PECMD 的 IFEX 命令也可以。

┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃    │格式│IFEX <条件,>[命令群组1][!命令群组2]                                                         ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │功能│依据条件表达式是否成立,成立则执行命令群组1,不成立则执行命令群组2。                        ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │参数│■条件          对[可用内存]或[磁盘可用空间]或[按键]或[数值变量]或[文件目录]的判断。        ┃
┃    │    │■可用内存      MEM<比较符>数值。                                                           ┃
┃    │    │■磁盘可用空间  R:\<比较符>数值,R:表示盘符。                                               ┃
┃    │    │■按键          KEY<比较符>数值。                                                           ┃
┃    │    │■文件目录      文件目录名,可以使用通配符。                                                ┃
┃    │    │■数值变量      $数值变量名<比较符>数值或数值变量名,数值变量是CALC或ENVI赋值设置的变量。   ┃
┃    │    │■比较符        比较操作符为"<"、">"、"=",分别表示"小于"、"大于"、"等于"。                 ┃
┃IFEX│    │■数值          比较的数值,磁盘和内存单位是MB,按键数值是按键代码。                        ┃
┃    │    │■命令群组      要执行的一条或多条命令,多条命令之间用"|"分开。命令群组之间用分隔符"!"分开。┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │示例│IFEX KEY=17,TEXT 搜索系统字体…|FONT \WINDOWS!TEXT 安装外挂字体|FONT %CurDrv%\外置程序\FONT ┃
┃    │    │IFEX C:\Windows,!MESS 目录C:\Windows不存在,\n请点[确定]。@ 目录检查#OK                     ┃
┃    ├──┼──────────────────────────────────────────────┨
┃    │备注│※本命令功能强大,比较复杂,且可以嵌套(IFEX或FIND)使用,判断多个条件。FIND命令功能与其相似。┃
┃    │    │※<条件表达式>后的","号也可用"*"代替。                                                      ┃
┃    │    │※本命令嵌套IFEX或FIND命令时,被嵌套的命令中不能使用"!"群组分隔符。                         ┃
┃    │    │※本命令包括FIND命令均作命令群解释,命令中不能嵌套TEAM命令。                                ┃
┃    │    │※当IFEX命令用于检测按键时,若用户按了'A'~'Z'或'0'~'9'这些键,按键结果保存在%PressKey%中。┃
┃    │    │※本命令用于变量判断时,所有变量均按double型来处理(最多保留4位小数)。                       ┃
┣━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫


[ 本帖最后由 lxl1638 于 2008-4-11 05:49 PM 编辑 ]
作者: lianjiang    时间: 2008-4-11 17:50
PECMD 的 IFEX 能在dos下用吗?
作者: lxl1638    时间: 2008-4-11 18:01
不能,现在所谓的B盘,一般是指PE中的B盘,实际的软驱已不存在了(新机不装软驱,旧机中的软驱大多已坏,不能用)。
所以在PE中选择PECMD是可行的方法。

[ 本帖最后由 lxl1638 于 2008-4-11 06:02 PM 编辑 ]
作者: pseudo    时间: 2008-4-11 19:00
标题: ms dos7.1中判断软驱存在性
原帖由 cxyun002 于 2008-4-11 05:05 PM 发表
你这B:盘是软驱还是内存盘.

要判断类似软驱的。
背景是这样的:
grub4dos加载ms dos7.1启动盘映像为C:盘,并试图加载另一映像(若无该映像则设法让grub忽略加载)为B:盘(fd1)
由于后一个映像可能不存在,进入dos后,需要检查b:盘里是否存在,以便执行不同流程。但
if exist b:\.....之类的语句都会导致失控(判断硬盘不会失控)。

之所以要玩ms dos7.1,是因为我要先启动到dos,在dos下从硬盘已有系统中自动提取硬盘驱动,然后再用grub4dos启动PE。
顺便问一句:进入dos后有办法知道当初是选择哪个grub菜单项进入的吗?

原帖由 lxl1638 于 2008-4-11 06:01 PM 发表
不能,现在所谓的B盘,一般是指PE中的B盘,实际的软驱已不存在了(新机不装软驱,旧机中的软驱大多已坏,不能用)。
所以在PE中选择PECMD是可行的方法。

赫赫,PECMD功能强大,但在此环境不能运行。

原帖由 lianjiang 于 2008-4-11 05:03 PM 发表
找个“DREADY.COM”, 可用于判断指定盘符“可写/只读/不存在”等。
当指定盘符不存在时,费时会多一点。不影响程序的运行的连续性。

谢谢提供工具。我试试看。
不借助工具不知道还有没有办法。

[ 本帖最后由 pseudo 于 2008-4-11 07:02 PM 编辑 ]
作者: cxyun    时间: 2008-4-11 21:02
我用Avlgomgr.exe载入iso启动映像,内有多个dos7.1启动盘映像,使用挺方便的.
你这个方法我没用过.
载入iso启动映像还有多种方法,多差不多的.




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