中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-24 16:12
中国DOS联盟论坛 » DOS启动盘 & LOGO技术 (启动盘室) » Climbing大大,关于你发表的一篇帖子,请指教! 查看 1,130 回复 4
楼 主 Climbing大大,关于你发表的一篇帖子,请指教! 发表于 2004-09-26 00:00 ·  中国 湖南 长沙 电信
初级用户
积分 157
发帖 16
注册 2004-09-18 00:00
21年会员
UID 31524
性别 男
状态 离线
新版本的findcd.exe支持多光驱的,在启动光盘的autoexec.bat中加入这些命令
findcd /s > nul
if "%cdrom%"=="1" set path=%path%;%cdrom1%:\;
if "%cdrom%"=="2" set path=%path%;%cdrom1%:\;%cdrom2%:\;
if "%cdrom%"=="3" set path=%path%;%cdrom1%:\;%cdrom2%:\;%cdrom3%:\;
set cdrom=
for %%I in (%cdrom1%,%cdrom2%,%cdrom3%) DO if exist %%I\光盘上的某目录\某文件 set cdrom=%%I
----------------------------------------
问题来了:
例如我有2个光驱,分别加载到D:和E:
我把光盘插入D:光驱
当执行到"DO if exist %%I\光盘上的某目录\某文件"这一句时,会出现
read failed from drive E:
Abort,Retry,Fail?
(插入到E:,会提示read failed from D
道理很明显,因为if exist这个判断程序会去读取所有的光区.而E:里是空的.
但是没有这个判断就不能自动识别双光区,该如何做才能避免这个错误提示呢?
2 发表于 2004-09-26 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
兄弟,到无忧论坛看回复吧。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2004-09-26 00:00 ·  美国
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
呵呵,那個findcd程序是我編寫的。前面加上dready命令來判斷的話就不會出現什麼Abort, Retry, Fail的錯誤了。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

4 发表于 2004-09-27 00:00 ·  中国 湖南 长沙 电信
初级用户
积分 157
发帖 16
注册 2004-09-18 00:00
21年会员
UID 31524
性别 男
状态 离线
该怎么改呢?我实在不知道怎么搞啊。errorlevel的参数也不知道,请Wengier帮忙修改一下好吗?
findcd /s > nul
set bootcd=
for %%I in (%cdrom1%,%cdrom2%) DO dready %%I IF NOT ERRORLEVEL 1 set bootcd=%%I

5 发表于 2004-09-27 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
我写的一个类似的批处理,你稍加修改一下应该可以解决问题:xyfpath.bat:用来设置搜索路径:

@echo off
set drives=
for %%D in (C: D: E: F: G: H: I: J: K: L: M: N: P: Q: R: S: T: U: V: W: X: Y: Z DO Call IsReady %%D
::echo %drives%
::pauseset mypath=
for %%D in (%drives%) DO if exist %%D\syssoft\clone\systools\ghost.exe apath *mypath %%D\SYSSOFT\CLONE\SYSTOOLS;%%D\SYSSOFT\CLONE\DOSTOOLS;%%D\SYSSOFT\CLONE\WINTOOLS
if exist c:\ucdos\nul apath c:\ucdos
if exist c:\dos71\nul apath c:\dos71
if exist c:\dos\nul apath c:\dos
if exist c:\batch\nul apath c:\batch
for %%D in (%drives%) DO if exist %%D\systools\pqmagic.exe apath *mypath %%D\SYSTOOLS;%%D\DOSTOOLS;%%D\WINTOOLSif not "%mypath%"=="" apath %mypath%
if "%mypath%"=="" goto _nopath
set drives=
set mypath=
goto _quit:_nopath
echo Sorry! I cannot find any xyf's path on your system.
echo PATH NOT SET!!!
pause:_quit


IsReady.bat:用来判断某个盘符是否准备好:

@echo off
dready %1 > nul
if errorlevel 1 goto _quit
if errorlevel 0 set drives=%1 %drives%

:_quit
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: