Board logo

标题: Climbing大大,关于你发表的一篇帖子,请指教! [打印本页]

作者: xsc     时间: 2004-9-26 00:00    标题: Climbing大大,关于你发表的一篇帖子,请指教!
新版本的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<img src="images/smilies/face-laugh.png" align="absmiddle" border="0">
道理很明显,因为if exist这个判断程序会去读取所有的光区.而E:里是空的.
但是没有这个判断就不能自动识别双光区,该如何做才能避免这个错误提示呢?

作者: Climbing     时间: 2004-9-26 00:00
兄弟,到无忧论坛看回复吧。

作者: Wengier     时间: 2004-9-26 00:00
呵呵,那個findcd程序是我編寫的。前面加上dready命令來判斷的話就不會出現什麼Abort, Retry, Fail的錯誤了。

作者: xsc     时间: 2004-9-27 00:00
该怎么改呢?我实在不知道怎么搞啊。errorlevel的参数也不知道,请Wengier帮忙修改一下好吗?
findcd /s &gt; nul
set bootcd=
for %%I in (%cdrom1%,%cdrom2%) DO dready %%I IF NOT ERRORLEVEL 1 set bootcd=%%I


作者: Climbing     时间: 2004-9-27 00:00
我写的一个类似的批处理,你稍加修改一下应该可以解决问题: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<img src="images/smilies/face-laugh.png" align="absmiddle" border="0"> 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 &gt; nul
if errorlevel 1 goto _quit
if errorlevel 0 set drives=%1 %drives%

:_quit