Board logo

标题: ghost的autoexec.batw问题.请教 [打印本页]

作者: zsx     时间: 2008-2-28 22:05    标题: ghost的autoexec.batw问题.请教

@ECHO OFF
IF %CONFIG%#==M4# GOTO END
SET SM=
XMSDSK 4096 /Y
ECHO Now setting up the RAM disk...
FINDRAMD>NUL
IF %RAMDRIVE%#==# GOTO NORAM
IF NOT EXIST %RAMDRIVE%\TEMP\NUL MD %RAMDRIVE%\TEMP
SET TMP=%RAMDRIVE%\TEMP
SET TEMP=%RAMDRIVE%\TEMP
IF NOT EXIST %RAMDRIVE%\SYSTEM\NUL MD %RAMDRIVE%\SYSTEM
COPY COMMAND.COM %RAMDRIVE%\SYSTEM>NUL
IF NOT EXIST %RAMDRIVE%\SYSTEM\COMMAND.COM ECHO Warning: Failed to copy files!
IF NOT EXIST %RAMDRIVE%\SYSTEM\COMMAND.COM GOTO COPYERR
SET COMSPEC=%RAMDRIVE%\SYSTEM\COMMAND.COM
:COPYERR
PATH=%RAMDRIVE%;%RAMDRIVE%\SYSTEM
IF %SM%#==Y# LH SMARTDRV 4096 2048 /X
GOTO NEXT
:NORAM
ECHO Warning: Can't create RAM disk!
IF %SM%#==Y# ECHO          Can't load SMARTDRV!
SET COMSPEC=A:\COMMAND.COM
:NEXT
SET SM=
SET PROMPT=$P$G
PATH=A:\;C:\;%CDROM%:\;..
LFNFOR ON
SET DIRCMD=/4
SET HDPMI=16384
LH KILLER
LH DOSKEY
LH CTMOUSE
LH doslfn /C- /Z:A:\CP936UNI.TBL
LH HDPMI32
LH NTFSPRO
LH MOUSCLIP /M
LH SHSUCDX /D:IDE-CD /D:SATA-CD /Q /~+
LH FINDCD /S
IF %CONFIG%#==M1# GOTO GHOST
IF NOT %CONFIG%#==M1# GOTO END1
:GHOST
CALL FINDCDR "GHOST.EXE" C D E F G H I J K L M N O P Q R S T U V W X Y Z
SET DRIVE=Z Y X W V U T S R Q P O N M L K J I H G F E D C
FOR %%I IN (%DRIVE%) DO IF EXIST %%I:\*.GHO SET DRV=%%i
REN %DRV%:\*.GHO XP.GHO
%CDROM%:\Ghost -clone,mode=pload,src=%DRV%:\xp.gho:1,dst=1:1 -sure -fx
GOTO END
:END1
call h.bat
:END
A:
测试可用.但执行到FOR %%I IN (%DRIVE%) DO IF EXIST %%I:\*.GHO SET DRV=%%i会提示G(光盘)未准备好.要安F.如果用管道命令"|"

[ Last edited by zsx on 2008-2-29 at 04:21 PM ]
作者: fastslz     时间: 2008-2-28 22:56
方法1: 用call shift 的方法避开%CDROM%盘符
方法2: vol %CDROM%根据返回值跳开%CDROM%盘符
作者: zsx     时间: 2008-2-29 00:24
我有2个光驱.其中一个放启动盘.当检测到另一个光驱时.由于没光盘无法读盘出错.不管如果加语句.还是会显示..重试?放弃?要安F键(放弃)就好.不知如何写AUTOEXEC.BAT语句跳过这个盘.

[ Last edited by zsx on 2008-2-29 at 12:32 AM ]
作者: fastslz     时间: 2008-2-29 01:07
看来还手把手给代码了
太玩了明天吧~
作者: zsx     时间: 2008-2-29 10:26
F| FOR %%I IN (%DRIVE%) DO IF EXIST %%I:\*.GHO SET DRV=%%i
这个语句为何不会自动会答 F 呢?
作者: zsx     时间: 2008-2-29 11:47
问题已解决.语句如下
FOR %%I IN (%DRIVE%) DO IF EXIST %%I:\*.GHO<F SET DRV=%%i
实现自动会答F
作者: Climbing     时间: 2008-2-29 11:49
用bart出的findcd可以直接根据光盘上的文件找到你想要的光驱盘符,不用挨个检测。
作者: zsx     时间: 2008-2-29 16:37
确实有点难.我以为在IF EXIST %%I:\*.GHO后加<F会跳过另一个光盘.其实是没执行IF EXIST命令.
CLIMBING(7楼)没理解我的意思.GHOST.EXE在光盘.*.GHO在其它任意盘(不确定).启动盘在其中一个光驱.另一个光驱无盘.检测时会出错.一定要跳过.
作者: fastslz     时间: 2008-2-29 18:18

@echo off
call test.bat C D E F G H I J K L M N O P Q R S T U V W
pause
test.bat内容
:xxx
if "%1"=="" goto end
if /i not "%CDROM%"=="%1" if exist "%1:\*.GHO" SET DRV=%1
if /i not "%CDROM1%"=="%1" if exist "%1:\*.GHO" SET DRV=%1
shift
goto xxx
:end
自己看一下是否有必要把"%CDROM%"=="%1"改成"%CDROM%:"=="%1"取决于你的环境变量情况自行修改
作者: balinger     时间: 2008-2-29 19:40
shell=command.com /P /F
/F表示当command.com调用程序运行出错时,将Fail作为Abort,Retry,Fail中的默认选项
好象可以解决楼主的问题。
作者: zsx     时间: 2008-2-29 22:17
已试过10楼的办法可行.谢谢.我接着试9楼的办法.学习学习.