goto 批处理文件运行到这里将跳到goto 所指定的标号处,一般与 if 配合使用。
如:
goto end
:end
echo this is the end
: 这是标号字符(所在位是冒号),是用来执行被 goto 跳转所用的标号字符,
标号所在行是不会被执行,如:
:end 等等...
choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该
加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?
例如,test.bat的内容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag 应先判断数值最高的错误码
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,
然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行
标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都
以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。
for 循环命令,只要条件符合,它将多次执行同一命令。
格式FOR [%%f] in (集合) DO [命令]
只要参数f在指定的集合内,则条件成立,执行命令
如果一条批处理文件中有一行:
for %%c in (*.bat *.txt) do type %%c
含义是如果是以bat或txt结尾的文件,则显示文件的内容。
device和devicehigh
加载一些内存驻留程序,用于管理设备。比如内存管理程序和
光驱驱动程序等。
如: device=c:\dos\himem.sys
device=c:\dos\emm386.exe ram
devicehigh=c:\cdrom\cdrom.sys
[menu]
menuitem=CD, Ghsot Huifu from CDROM to C Disk 从光盘恢复到 C 盘
menuitem=DISK1, Ghsot Huifu from F Disk to C disk 从 F 盘恢复到 C 盘
menuitem=DISK2, Ghost Beifen C Disk to F Disk 备份 C 盘到 F 盘
menudefault=CD,30
menucolor=7,0
[CD]
device=himem.sys /testmem:off
device=oakcdrom.sys /D:mscd001
device=btdosm.sys
device=flashpt.sys
device=btcdrom.sys /D:mscd001
device=aspi2dos.sys
device=aspi8dos.sys
device=aspi4dos.sys
device=aspi8u2.sys
device=aspicd.sys /D:mscd001
[DISK1]
device=himem.sys /testmem:off
[DISK2]
device=himem.sys /testmem:off
[COMMON]
files=10
buffers=10
dos=high,umb
stacks=9,256
devicehigh=ramdrive.sys /E 2048
lastdrive=z
=============================================================================
config.sys 的以下菜单[menu] 和 [CD] 修改好就可以了 [DISK1] 和 [DISK2] 项都不需
要修改的,只修改一下标签就行了,其实不修改标签也一样可以,我们只是为了放便记住
它,不会搞错,所以还是修改一下的好。其它它用默认就可以了。
2、autolexec.bat 文件的做修改
==============================================================================
@ECHO OFF
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
cls
call setramd.bat %LglDrv%
set temp=c:\
set tmp=c:\
path=%RAMD%:\;a:\;%CDROM%:\
copy command.com %RAMD%:\ > NUL
set comspec=%RAMD%:\command.com
copy extract.exe %RAMD%:\ > NUL
copy readme.txt %RAMD%:\ > NUL
:ERROR
IF EXIST ebd.cab GOTO EXT
echo Please insert Windows 98 Startup Disk 2
echo.
pause
GOTO ERROR
:EXT
%RAMD%:\extract /y /e /l %RAMD%: ebd.cab > NUL
echo The diagnostic tools were successfully loaded to drive %RAMD%.
echo.
IF "%config%"=="NOCD" GOTO QUIT
IF "%config%"=="HELP" GOTO HELP
LH %ramd%:\MSCDEX.EXE /D:mscd001 /L:%CDROM%
echo.
GOTO QUIT
:HELP
cls
call help.bat
echo Your computer will now restart and the startup menu will appear.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
restart.com
GOTO QUIT
:QUIT
echo To get help, type HELP and press ENTER.
echo.
rem clean up environment variables
set CDROM=
set LglDrv=
================================================================================
改成这样:
如下: (把下面的红色字全部复制一份到 autolexec.bat 里就可以了,原来的全部覆盖)
================================================================================
@ECHO OFF
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
cls
call setramd.bat %LglDrv%
set temp=c:\
set tmp=c:\
path=%RAMD%:\;a:\;%CDROM%:\
copy command.com %RAMD%:\ > NUL
set comspec=%RAMD%:\command.com
copy extract.exe %RAMD%:\ > NUL
copy readme.txt %RAMD%:\ > NUL
:ERROR
IF EXIST ebd.cab GOTO EXT
echo Please insert Windows 98 Startup Disk 2
echo.
pause
GOTO ERROR
:EXT
%RAMD%:\extract /y /e /l %RAMD%: ebd.cab > NUL
echo The diagnostic tools were successfully loaded to drive %RAMD%.
echo.
IF "%config%"=="CD" GOTO HUIFU1
IF "%config%"=="DISK1" GOTO HUIFU2
IF "%config%"=="DISK2" GOTO BEIFEN
:HUIFU1
LH %ramd%:\MSCDEX.EXE /D:mscd001 /L:%CDROM%
%CDROM%:\ghost.exe -clone,mode=pload,src=%CDROM%:\xp.gho:1,dst=1:1 -sure -rb
:HUIFU2
f:\ghost.exe -clone,mode=pload,src=f:\xp.gho:1,dst=1:1 -sure -rb
:BEIFEN
f:\ghost.exe -clone,mode=pdump,src=1:1,dst=f:\xp.gho -fx -sure -z9 -rb
:QUIT
echo To get help, type HELP and press ENTER.
echo.
rem clean up environment variables
set CDROM=
set LglDrv=
:: 测试虚拟盘是否建立成功
dready z: /w
if errorlevel 1 goto _errramd
:: 建立testdrv.bat临时文件到虚拟盘上
set td=Z:\testdrv.bat
> %td% echo @echo off
>> %td% echo dready %%1
>> %td% echo if errorlevel 1 goto _quit
>> %td% echo set CDOK=%%CDOK%% %%1
>> %td% echo :_quit
:: 调用mscdex为所有光驱分配盘符
LH MSCDEX.EXE /D:mscd001
set CDROM=
findcd /s > nul
:: 调用testdrv.bat检测哪些光驱中有盘并将准备好的光驱保存到cdok变量中
SET CDOK=
for %%I in (%cdrom1% %cdrom2% %cdrom3%) DO call %td% %%I
::检测哪些准备好的光驱中存在需要的GHO文件,并将结果保存到bootcd变量中
set bootcd=
for %%I in (%cdok%) DO if exist %%I\XPSP2\XP-SP2.GHO set BOOTCD=%%I
:: 检测是否存在需要的启动光盘
IF %BOOTCD%*==* goto _nobootcd
set CDROM=%bootcd%
echo bootcd=%bootcd%
goto _findbootcdok
:: 找不到所需启动光盘的错误提示
:_nobootcd
echo.
echo Error: I cannot find your CDROM where we boot from!
echo Please make sure you insert the boot disc in it!
pause
goto _quit
:: 如果存在gho文件,则执行ghost过程并重新启动
:_findbootcdok
%CDROM%\XPSP2\ghost.exe -clone,mode=pload,src=%CDROM%\XPSP2\XP-SP2.gho:1,dst=1:1 -sure -fx
::这是当GHOST工作完成后反回主菜单,在用EASYBOOT调用下,不调用下不要用这参数。
wboot.com
goto _quit
:: 没有成功建立内存虚拟磁盘的错误提示
:_errramd
echo.
echo Error: I cannot access your RAM Disk at Q:!
echo Check if xmsdsk can create RAM Disk.
pause
goto _quit
:: 退出,清理环境变量
:_quit
for %%I in (cdrom1 cdrom2 cdrom3 cdok) do set %%I=
@echo off
dready z: /w
if errorlevel 1 goto _errramd
set td=Z:\testdrv.bat
> %td% echo @echo off
>> %td% echo dready %%1:
>> %td% echo if errorlevel 1 goto _quit
>> %td% echo set CDOK=%%CDOK%% %%1
>> %td% echo :_quit
LH MSCDEX.EXE /D:mscd001
if not %CDROM%*==* set CDROM=
if not %CDROM%*==* set CDROM=
findcd /s > nul
SET CDOK=
for %%I in (%cdrom1%,%cdrom2%,%cdrom3%) DO call %td% %%I
IF NOT %CDROM%*==* set CDROM=
IF NOT %CDROM%*==* set CDROM=
set bootcd=
for %%I in (%cdok%) DO if exist %%I\setup.exe set BOOTCD=%%I
IF %BOOTCD%*==* goto _nobootcd
set CDROM=%bootcd%
echo bootcd=%bootcd%
goto _findbootcdok
:_nobootcd
echo.
echo.
echo.
echo.
echo 错误: 在光盘根目录下没有发现 WINDOWS 98 SE 的 SETUP.EXE 安装文件 !
echo.
echo 请插入 WINDOWS 98 SE 的安装光盘, 必须在光盘的根目录, 不支持多层目录!
echo.
echo.
echo.
echo.
pause
:_findbootcdok
%CDROM%\setup /is /ie /iv /im /il
zmenu.bat
goto _quit