Board logo

标题: 关于寻找硬盘最后分区的话题(或困惑) [打印本页]

作者: QEYU     时间: 2003-11-29 00:00    标题: 关于寻找硬盘最后分区的话题(或困惑)
【基本】:
set lastdrv=
for %%i in (z y x w v u t s r q p o n m l k j i h g f e d c) do call chkdrv.bat %%i

其中chkdrv.bat如下:
if not %lastdrv%'==' goto _end
if %1'==' goto _end
if %1==%cdrom% goto _end
if %1==%RAMD% goto _end
dready %1 /w
if errorlevel 2 goto _end
set lastdrv=%1
:_end

【无忧启动盘配置】
@ECHO OFF
PROMPT $P$G
set temp=c:\
set tmp=c:\
SET EXPAND=YES
SET DIRCMD=/O:N
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
call setramd.bat %LglDrv%
path=%RAMD%:\;%RAMD%:\BAT;%CDROM%:\;%CDROM%:\UCDOS;%CDROM%:\BOOT;A:\;C:\;
copy get.exe %RAMD%:\ > NUL
copy attrib.exe %RAMD%:\ > NUL
copy command.com %RAMD%:\ > NUL
copy edit.com %RAMD%:\ > NUL
copy format.com %RAMD%:\ > NUL
copy fdisk.exe %RAMD%:\ > NUL
copy deltree.exe %RAMD%:\ > NUL
copy restart.com %RAMD%:\ > NUL
copy readme.exe %RAMD%:\ > NUL
copy mouse.* %RAMD%:\ > NUL
copy xxcopy.exe %RAMD%:\ > NUL
rem copy extract.exe %RAMD%:\ > NUL
set comspec=%RAMD%:\command.com
LH MSCDEX.EXE /D:MSCD000 /L:%CDROM%

CDA %CDROM% > NUL
IF errorlevel 1 GOTO NEXTCD
IF NOT EXIST %CDROM%:\BOOT\TW.EXE GOTO NEXTCD
GOTO BOOT

:NEXTCD
CALL CHCDROM.BAT C D E F G H I J K L M N O P Q R S T U V W X Y Z
GOTO BOOT

:BOOT
LH ZENO.EXE /Q > NUL
LH SMARTDRV.EXE > NUL
LH KILLER.EXE > NUL
LH DOSKEY.COM /B=16 > NUL
LH PERUSE.COM /X16 > NUL
LH DOSLFN.COM /Z:CP936UNI.TBL > NUL
LH KEY.COM PY WB > NUL
Set LglDrv=

MD %RAMD%:\TEMP
XXCOPY /E /H %CDROM%:\BOOT\EBD %RAMD%:\ > NUL
%RAMD%:
CD \
LH MOUSE.COM > NUL
LH FINDCD.EXE > NUL
set lastdrv=
for %%i in (z y x w v u t s r q p o n m l k j i h g f e d c) do call chkdrv.bat %%i
MENU.BAT

【困惑】
为何%lastdrv%有时正确有时错误?为什么不能像%ramd%(或%ramdrv%)和%cdrom%那样准确?

作者: Wengier     时间: 2003-11-29 00:00
这个话题以前曾讨论过,是用一两条命令轻易实现的,根本就不用这么复杂。

作者: QEYU     时间: 2003-11-30 00:00
以下是引用Wengier在2003-11-29 21:46:33的发言:
这个话题以前曾讨论过,是用一两条命令轻易实现的,根本就不用这么复杂。

是用那两条命令,但作到无忧启动盘里找到的却是cdrom。试验时,是用软盘配置启动的,找到的是正确的。但刻录后就错误了。

作者: Wengier     时间: 2003-11-30 00:00
上回我说的可不是这几条命令吧!比如说下面的命令不知从何而来的,当然是不行的:

if not %lastdrv%'==' goto _end
if %1'==' goto _end
if %1==%cdrom% goto _end
if %1==%RAMD% goto _end
dready %1 /w

另外下面的所有命令用“超级MS-DOS 7.10启动盘”中的那个FINDRAMD代替就行了,而不用这么复杂,而且非常浪费启动时间:

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
call setramd.bat %LglDrv%
...