无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4157|回复: 5
打印 上一主题 下一主题

[求助] 请求高手将辈将我的WCRUN批处理完善

[复制链接]
跳转到指定楼层
1#
发表于 2012-2-19 19:29:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前言:
没过二月二,,先给大家拜个晚年!
年前年后的有了空闲,之前一直没怎么接触GRUB4DOS,更别说RUN批处理模块了。
这个批处理很是浅显,发贴出来,主要是给高手前辈们批评指正,希望这个批处理能完善,将其用于网虫PE的下版更新。


将GURB4DOS中的grldr改名为wcldr,避免与其他PE的grdlr起冲突,方便合盘
批处理名称;WCRUN 共用于网虫PE的各版本(光盘、硬盘、U盘及UD版),除了定位引导所在根分区的wcldr,其他所有主菜单及子菜单都交给WCRUN批处理模块动态生成

请教前辈:判断是否UD启动,,没有用read或cat读取内存判断,只用了root (ud) 是否严谨?我在有限条件下进行了测试,除了UD启动,其他方式的启动 root (ud) 返回的都是 否

如果用Finsttool.exe在硬盘下创建了UD版PE(全藏入硬盘版),启动后,%?_BOOT% 及 %@root% 变量都是 hd0,0,用cat读取内存判断也都是 0x80
如果不用root (ud) 进行判断,当执行 insmod /WC2008/WCRUN 时,只会查找 (hd0,0)/WC2008/WCRUN,不会查找UD区,启动就会失败

wcldr用于定位启动根分区,并将根分区设置为变量bootdv,变量bootdv是WCRUN批处理的的基础变量,wcldr内置代码内容如下:
debug off
## 判断是否为UD启动,如果不是则设置bootdv为初始启动驱动器 %?_BOOT%
root (ud) && call set bootdv=(ud) ! call set bootdv=%?_BOOT%
## 如果UD被识别为zip,调用WCRUN .hd2hd将fd0转换为hd0
if "%?_BOOT:~1,1%"=="f" && find --set-root --devices=f /WC2008/WCRUN && command /WC2008/WCRUN .hd2hd && call set bootdv=(hd0) && root (hd0)
## 再次确认bootdv变量
if exist %bootdv%/WC2008/WCRUN || find --set-root /WC2008/WCRUN && call set
bootdv=%@root^%
## 加载WCRUN模块到内存
delmod -l WCRUN || insmod /WC2008/WCRUN
## 判断PE版本,动态生成主菜单并写入内存
WCRUN .bt && WCRUN .rlst
## 进入PE主菜单 lstmenu=(md)0x3000+0x10
configfile %lstmenu%


二、批处理名称;WCRUN    WCRUN.7z (5.5 KB, 下载次数: 51) 2#















[ 本帖最后由 网虫2008 于 2012-2-20 09:34 编辑 ]

评分

参与人数 1无忧币 +10 收起 理由
2011戒烟如你 + 10

查看全部评分

2#
 楼主| 发表于 2012-2-19 19:29:26 | 只看该作者
!BAT
debug off
delmod -l %~nx0 || insmod %0

## 设置写入主菜单到内存的变量
set lstmenu=(md)0x3000+0x10
## 设置写入扩展菜单到内存的变量
set endmenu=(md)0x3100+0x10
## 设置写入自动创建ISO/IMG文件列表到内存的变量
set imgmenu=(md)0x3100+0x10
## 设置写入查找PE菜单到内存的变量
set fpemenu=(md)0x3100+0x10
## 设置写入MASDOS工具箱子菜单到内存的变量
set endmimg=(md)0x3200+0x10
:open
if not #%~x1==# goto %~x1
exit

## 修改动态菜单项显示的内容
:setaname
set aa=%~n1
if /i "%aa:~,4%"=="DTS-" set amame=时代菜鸟DOS工具箱
if /i "%aa:~,4%"=="MAXD" set amame=MAXDOS9 DOS工具箱
if /i "%~n1"=="MYISO" set amame=我的ISO镜像文件
exit

## 预设直接MAP加载的ISO文件
:mapname
if /i %~nx1==UD_Win7PE.ISO set mapiso=y
if /i %~nx1==UD_2003PE.ISO set mapiso=y
exit

## 返回主菜单
:.menu
call :in_boot
call :.rlst
cat %lstmenu%% | set m=
if /i "%m%"=="" && configfile (md)4+8 ! configfile %lstmenu%
exit

## F6IMG模块版本转换
:.noimg6
if /i "%noimg6%"=="n" && set noimg6=y ! set noimg6=n
call :.menu
exit
:.f6img
if exist f6dv || exit
ls (fd1)/f6.gz | set f6=
if /i "%f6%"=="" if /i "%noimg6%"=="y" && set ynf6=y ! set ynf6=n
if /i "%ynf6%"=="y" call :f6img
call :in_boot
exit
:f6img
command %f6dv%/F6IMG %f6dv% || set ynf6=y
exit

## 调整输入的文件路径并查找
:find
set /u path=%1
if /i "%1"=="%~nx1" set /u path=WC2008/ISOIMGS/%1
if /i "%path:~0,1%"=="/" set /u path=%path:~1%
if exist frt && if exist %frt%/%path% && goto in_boot
if exist %bootdv%/%path% && call set frt=%bootdv% && goto in_boot
if exist ()/%path% && call set frt=%@root^% && goto in_boot
clear
echo $[0102]正在查找 %path%.......
if exist (ud)/%path% && call set frt=(ud) && goto in_boot
if exist (hd0)/%path% && call set frt=(hd0) && goto in_boot
if exist (hd1)/%path% && call set frt=(hd1) && goto in_boot
find --set-root /%path% && call set frt=%@root^% ! root (cd)/ || cdrom --init && map --hook
if exist %frt%/%path% || find --set-root /%path% && call set frt=%@root^%
## 初始化默认根目录
:in_boot
if /i "%bootdv%"=="%@root%" exit
root %bootdv%/ || find --set-root /WC2008/WCRUN && call set bootdv=%@root^%
exit


############# 判断是否自动加载USB加速器 加载中文字库 #############
:.bt
if /i not "%bootdv%"=="(cd)" && if exist %bootdv%/hdldr || if exist %bootdv%/WC2008/USB_ACC.0PE && %bootdv%/WC2008/USB_ACC.0PE
font && font %bootdv%/WC2008/unifont.hex
graphicsmode -1 640:480
color 11 12 13 14
## 搜索动态列表WC2008/ISOIMGS及F6IMG模块的SRS文件夹所在分区,SRS文件夹可放到根目录
call :find /WC2008/SRS/F6IMG
if exist frt || call :find /SRS/F6IMG
if exist %frt%/WC2008/SRS/F6IMG && set f6dv=%frt%/WC2008/SRS ! if exist %frt%/SRS/F6IMG && set f6dv=%frt%/SRS
set frt= && call :find READ.TXT
exit


#############   判断当前启动介质版本,定义标题及说明   #############
:rbt
if exist noimg6 || set noimg6=y
if /i "%noimg6%"=="n" set f6bb=无F6IMG版 && set runf6bt=返回 内置F6IMG菜单 && set rnof6=返回 内置F6IMG模块版。所有相关选项执行时首先加载F6IMG
if /i "%noimg6%"=="y" set f6bb=内置F6IMG && set runf6bt=切换 无F6IMG模块版 && set rnof6=刷新主菜单为无F6IMG版。如启动失败,请重启后尝试此方式。
if exist %bootdv%/W888/wcloader && set bt=★【网虫2008】 Win7PE & 2003PE 光盘版(%f6bb%)★
if exist %bootdv%/WC2008/pxeboot && set bt=★【网虫2008】 Win7PE & 2003PE 全内置PXE版(%f6bb%)★
if exist %bootdv%/WC2008/UD/loadpxe.ini && set bt=★【网虫2008】 Win7PE & 2003PE 网启UD版(%f6bb%)★
if exist %bootdv%/WC2008/ub.txt && set bt=★【网虫2008】 Win7PE & 2003PE U盘版(%f6bb%)★
if exist %bootdv%/WC2008/wangchong && set bt=★【网虫2008】 Win7PE & 2003PE 硬盘版(%f6bb%)★
set rimg1=首先搜索 %bootdv% 所在的WC2008/ISOIMGS或自定义文件夹
set rimg2=如不存在则搜索其他分区或光盘、U盘上的WC2008/ISOIMGS或自定义文件夹
set rcd1=注意:物理光驱启动,必须先设置BOOS第一启动项为光盘启动。
set rcd2=硬盘、U盘及UD版下显示此菜单项,主要用于安装原版XP/2003系统。
set rcd3=光盘版下无此菜单项,可在光盘版GRUB菜单下加载原版ISO进行系统安装。
set rusb2=读秒期间可按回车键跳过,也可按空格键强制激活plpbt。
set rusb1=U盘版或UD版会在启动第一时间运行此加速器
set reb1=光盘版及USB-CDROM下显示此菜单项
set rn5=查找 NT/2003/XP系统所在磁盘并启动
set rn6=查找 VISTA/WIN7/WIN2008系统所在磁盘并启动
set rh1=启动第一硬盘第一分区中的系统,将第一分区设置为活动分区。
set rh2=如第一分区无系统,将不会显示此菜单。
set rh3=启动第一硬盘第二分区中的系统,将第二分区设置为活动分区。
set rh4=如第二分区无系统,将不会显示此菜单。
set rend2=查找并启动其他分区存在的 Windows NT/2K/XP/VISTA/WIN7/WIN2008
set rend1=%runf6bt%,查找并启动网虫WinPE系列的各版本。
set rhdsys=查找并启动硬盘及UD上的系统
set rpxew7=%btend% 全内置网启支持版Win7PE From %rfroot%/WC2008/PXE_Win7PE.ISO
set rpxek3=%btend% 全内置网启支持版单双核2003PE From %rfroot%/WC2008/PXE_2003PE.ISO
set rudw7=%btend% Win7PE UD版 From %rfroot%/WC2008/UD_Win7PE.ISO
set rudk3=%btend% UD版单双核2003PE From %rfroot%/WC2008/PXE_2003PE.ISO
set rfpe=按照 PXE-UD-U-硬盘版的顺序,从%bootdv%以外的介质启动
set rlpmode1=如果加载ISO后启动蓝屏,请重新启动后尝试此模式。
set rlpmode2=如仍然启动蓝屏,可以按E键将“lpmum=?”中的问号改为其他数值(-1到5)
exit


#############   判断并显示当前启动介质的 WinPE 菜单项   #############
:.rlst
## 将主菜单写入内存
set w_menu=%lstmenu% && set return=\x7C\x7C WCRUN .menu \x7C\x7C configfile (md)4+8
set btend=启动 && set lstread=启动%bootdv%上的 && set rfroot=%bootdv%
call :rbt
set udw7= && set udk3= && set pxew7= && set pxek3= && set k32= && set k31= && set W88_MGR=
echo -e debug off\ndefault 3\ntimeout 20  > %w_menu%
echo -e title\nclear    >> %w_menu%
echo -e title %bt%    >> %w_menu%
echo -e clear    >> %w_menu%
echo -e title =======================================================    >> %w_menu%
echo -e clear    >> %lstmenu%
if exist %bootdv%/WC2008/W88_MGR && set W88_MGR=y && call :W88_MGR ! if exist %bootdv%/W888/W88_MGR && set W88_MGR=y && call :W88_MGR
if exist %bootdv%/WC2008/LDRIMG1 && set k31=y && call :k31 ! if exist %bootdv%/W888/SETUPIM1.BIN && set k31=y && call :k31
if exist %bootdv%/WC2008/LDRIMG2 && set k32=y && call :k32 ! if exist %bootdv%/W888/SETUPIM2.BIN && set k32=y && call :k32
if exist %bootdv%/WC2008/PXE_Win7PE.ISO set pxew7=y && call :pxew7
if exist %bootdv%/WC2008/PXE_2003PE.ISO set pxek3=y && call :pxek3
if exist %bootdv%/WC2008/UD_Win7PE.ISO set udw7=y && call :udw7
if exist %bootdv%/WC2008/UD_2003PE.ISO set udk3=y && call :udk3
## 判断是否显示 防蓝屏 菜单项
if exist %bootdv%/WC2008/pxeboot && set w_menu=%lstmenu% && set startrun=WCRUN .rlst && call :wflpmenu
if exist %bootdv%/WC2008/UD/loadpxe.ini && set w_menu=%lstmenu% && set startrun=WCRUN .rlst && call :wflpmenu
echo -e title\nclear    >> %w_menu%
echo -e title --运行 我的 DOS工具箱 \n\n %rimg1% \n\n %rimg2%    >> %w_menu%
echo -e WCRUN .autoimgmenu \x26\x26 configfile %imgmenu% %return%    >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --加载 WC2008/XXX.ISO \n\n %rimg1% \n\n %rimg2%    >> %w_menu%
echo -e WCRUN .autoisomenu \x26\x26 configfile %imgmenu% %return%    >> %w_menu%
echo -e boot    >> %w_menu%
## 判断是否显示 从光驱启动 菜单项
if /i not "%bootdv%"=="(cd)" call :cdrom
## 判断是否显示 切换到EasyBoot引导 菜单项
if exist %bootdv%/W888/wcloader call :eboot
echo -e title\nclear    >> %w_menu%
echo -e title\nclear    >> %w_menu%
echo -e title --扩展菜单 \n\n  %rend1% \n\n  %rend2%    >> %w_menu%
echo -e WCRUN .endlst \x26\x26 configfile %endmenu% %return%    >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --硬盘启动 \n\n  %rhdsys%    >> %w_menu%
echo -e WCRUN .fsys %return%    >> %w_menu%
echo -e boot    >> %w_menu%
call :defaultmenu2
exit
:cdrom
echo -e title --启动 光驱.%f6bb% \n\n  %rcd1% \n\n  %rcd2% \n\n  %rcd3%    >> %w_menu%
echo -e WCRUN .cdrom %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:eboot
echo -e title --切换 到EasyBoot菜单 \n\n  %reb1%    >> %w_menu%
echo -e chainloader --force (cd)/W888/wcloader %return%    >> %w_menu%
exit


##########################   防蓝屏菜单模块   ##########################
:wflpmenu
if /i not "%lpmum%"=="0" set lpbt=切换 到防止蓝屏.模式 && set /a wlpmum=0 ! set lpbt=返回 无防止蓝屏.模式 && set /a wlpmum=-1
echo -e title --%lpbt% \n\n  %rlpmode1% \n\n  %rlpmode2%    >> %w_menu%
echo -e set /a lpmum=%wlpmum%    >> %w_menu%
echo -e %startrun%  \x26\x26 configfile %w_menu% %return%     >> %w_menu%
echo -e boot    >> %w_menu%
exit


##########################   扩展菜单项   ##########################
:.endlst
set w_menu=%endmenu% && set return=\x7C\x7C configfile %endmenu% \x7C\x7C configfile (md)4+8
echo -e debug off\ndefault 1\ntimeout 20  > %w_menu%
echo -e title --%runf6bt% \n\n  %rnof6%    >> %w_menu%
echo -e WCRUN .noimg6    >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --搜索 网虫WinPE系统 \n\n  %rfpe% 网虫WinPE系列    >> %w_menu%
echo -e WCRUN .flst \x26\x26 configfile %fpemenu% %return%    >> %w_menu%
echo -e boot    >> %w_menu%
## 判断是否显示 USB自动加速器 菜单项
if exist %bootdv%/hdldr || if exist %bootdv%/WC2008/wangchong || call :usb
echo -e title\nclear    >> %w_menu%
echo -e title --查找 Windows NT/2K/XP \n\n  %rn5%    >> %w_menu%
echo -e call set ntmame=ntldr    >> %w_menu%
echo -e WCRUN .fnt %return%    >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --查找 Windows WIN7/WIN2008 \n\n  %rn6%    >> %w_menu%
echo -e call set ntmame=bootmgr    >> %w_menu%
echo -e WCRUN .fnt %return%    >> %w_menu%
echo -e boot    >> %w_menu%
## 判断第一硬盘第一主分区是否存在系统
if exist (hd0,0)/ntldr && call :hdo ! if exist (hd0,0)/bootmgr && call :hdo
## 判断第一硬盘第二主分区是否存在系统
if exist (hd0,1)/ntldr && call :hdt ! if exist (hd0,1)/bootmgr && call :hdt
call :defaultmenu
exit
:defaultmenu
echo -e title\nclear    >> %w_menu%
echo -e title\nclear    >> %w_menu%
echo -e title --回主菜单 \n\n    >> %w_menu%
echo -e WCRUN .menu \x7C\x7C configfile (md)4+8    >> %w_menu%
echo -e boot    >> %w_menu%
:defaultmenu2
echo -e title --重新启动 \n\n    >> %w_menu%
echo -e reboot    >> %w_menu%
echo -e title --关闭电脑 \n\n    >> %w_menu%
echo -e halt    >> %w_menu%
exit

:usb
echo -e title --加载 USB自动加速器 \n\n  %rusb1% \n\n  %rusb2%    >> %w_menu%
echo -e %bootdv%/W888/USB_ACC.0PE \x7C\x7C %bootdv%/WC2008/USB_ACC.0PE    >> %w_menu%
echo -e WCRUN .menu \x7C\x7C configfile (md)4+8    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:hdo
echo -e title --启动 (hd0,0)并永久激活此分区 \n\n  %rh1% \n\n  %rh2%    >> %w_menu%
echo -e WCRUN .f6img    >> %w_menu%
echo -e rootnoverify (hd0,0)    >> %w_menu%
echo -e makeactive    >> %w_menu%
echo -e chainloader +1    >> %w_menu%
exit
:hdt
echo -e title --启动 (hd0,1)并永久激活此分区 \n\n  %rh3% \n\n  %rh4%    >> %w_menu%
echo -e WCRUN .f6img    >> %w_menu%
echo -e rootnoverify (hd0,1)    >> %w_menu%
echo -e makeactive    >> %w_menu%
echo -e chainloader +1    >> %w_menu%
exit


#######   显示启动介质WinPE菜单项,查找任何介质中的网虫WinPE版本   #######
:.flst
set w_menu=%fpemenu% && set return=\x7C\x7C configfile %fpemenu% \x7C\x7C configfile (md)4+8
set btend=查找 && set lstread=从光盘、硬盘及U盘上搜索 && set rfroot=
call :rbt
echo -e debug off\ndefault 0\ntimeout 20  > %w_menu%
echo -e title --搜索所有Win7PE版本 \n\n  %rfpe% Win7PE系统    >> %w_menu%
echo -e WCRUN .fwin7 %return%    >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --搜索所有2003PE版本 \n\n  %rfpe% 2003PE系统    >> %w_menu%
echo -e WCRUN .fwink3 %return%    >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title\nclear    >> %w_menu%
if not exist W88_MGR && call :W88_MGR
if not exist k31 && call :k31
if not exist k32 && call :k32
if not exist udw7 && call :udw7
if not exist udk3 && call :udk3
if not exist pxew7 && call :pxew7
if not exist pxek3 && call :pxek3
call :defaultmenu
exit

:W88_MGR
echo -e title --%btend% Win7_RE(PE) \n\n  %lstread% Win7PE系统    >> %w_menu%
echo -e set ntmame=WC2008/W88_MGR \x26\x26 set cdfn=/W888/W88_MGR    >> %w_menu%
echo -e WCRUN .gope %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:k31
echo -e title --%btend% 单核 2003 WinPE \n\n  %lstread% 单核2003PE系统    >> %w_menu%
echo -e set ntmame=WC2008/LDRIMG1 \x26\x26 set cdfn=/W888/SETUPIM1.BIN    >> %w_menu%
echo -e WCRUN .gope %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:k32
echo -e title --%btend% 双核 2003 WinPE \n\n  %lstread% 双核2003PE系统    >> %w_menu%
echo -e set ntmame=WC2008/LDRIMG2 \x26\x26 set cdfn=/W888/SETUPIM2.BIN    >> %w_menu%
echo -e WCRUN .gope %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:udw7
echo -e title --%btend% Win7PE_网启UD版 \n\n  %rudw7%    >> %w_menu%
echo -e WCRUN /WC2008/UD_Win7PE.ISO %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:udk3
echo -e title --%btend% 2003PE_网启UD版 \n\n  %rudk3%    >> %w_menu%
echo -e WCRUN /WC2008/UD_2003PE.ISO %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:pxew7
echo -e title --%btend% Win7PE_网启支持版 \n\n  %rpxew7%    >> %w_menu%
echo -e WCRUN /WC2008/PXE_Win7PE.ISO %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:pxek3
echo -e title --%btend% 2003PE_网启支持版 \n\n  %rpxek3%    >> %w_menu%
echo -e WCRUN /WC2008/PXE_2003PE.ISO %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit

:.fwin7
echo && echo $[0102] 正在查找网虫Win7PE系统, 请稍候 ... && echo
set ntmame=WC2008/W88_MGR && set cdfn=/W888/W88_MGR && set fisonm=Win7PE && goto gofind
exit
:.fwink3
echo && echo $[0102] 正在查找网虫2003PE系统, 请稍候 ... && echo
set ntmame=WC2008/LDRIMG1 && set cdfn=/W888/SETUPIM1.BIN && set fisonm=2003PE && goto gofind
exit
:gofind
if /i "%bootdv%"=="(cd)" && set ynfhdpe=y && set ynfcdpe=n ! if exist %bootdv%/%ntmame% && set ynfhdpe=n && set ynfcdpe=y ! set ynfhdpe=y && set ynfcdpe=y
if exist %bootdv%/WC2008/PXE_%fisonm%.ISO || call :find /WC2008/PXE_%fisonm%.ISO
if exist %bootdv%/WC2008/PXE_%fisonm%.ISO || if exist %frt%/WC2008/PXE_%fisonm%.ISO && call :open /WC2008/PXE_%fisonm%.ISO
if exist %bootdv%/WC2008/UD_%fisonm%.ISO || call :find /WC2008/UD_%fisonm%.ISO
if exist %bootdv%/WC2008/UD_%fisonm%.ISO || if exist %frt%/WC2008/UD_%fisonm%.ISO && call :open /WC2008/UD_%fisonm%.ISO
if /i "%ynfhdpe%"=="y" call :.fnt ! if /i "%ynfcdpe%"=="y" call :cdfpe
if /i "%ynfhdpe%"=="" if /i "%ynfcdpe%"=="" call :.fnt || call :cdfpe
exit

:.gope
if exist %bootdv%%cdfn% && call :.f6img ! if exist %bootdv%/%ntmame% && call :.f6img
chainloader %bootdv%%cdfn% || chainloader %bootdv%/%ntmame% || call :.fnt || call :cdfpe
exit

:.fnt
find --set-root --devices=h /%ntmame% && call :.f6img
find --set-root --devices=h /%ntmame%
set /a ndv=%@root:~3,1%
if "%ndv%"=="0" goto ndd
map (hd%ndv%) (hd0)
map (hd0) (hd%ndv%)
map --rehook
find --set-root --devices=h /%ntmame%
:ndd
chainloader /%ntmame%
exit
:.fsys
set ntmame=bootmgr && call :.fnt || set ntmame=ntldr && call :.fnt || rootnoverify (hd0) && chainloader +1
exit

:.cdrom
set cdfn= && call :cdfpe
exit
:cdfpe
errorcheck off
chainloader (cd)%cdfn% && call :.f6img && chainloader (cd)%cdfn% && boot
chainloader (cd0)%cdfn%  && call :.f6img && chainloader (cd0)%cdfn% && boot
chainloader (cd1)%cdfn%  && call :.f6img && chainloader (cd1)%cdfn% && boot
chainloader (cd2)%cdfn%  && call :.f6img && chainloader (cd2)%cdfn% && boot
chainloader (cd3)%cdfn%  && call :.f6img && chainloader (cd3)%cdfn% && boot
errorcheck on
cdrom --init
map --hook
errorcheck off
chainloader (cd)%cdfn% && call :.f6img && chainloader (cd)%cdfn% && boot
chainloader (cd0)%cdfn%  && call :.f6img && chainloader (cd0)%cdfn% && boot
chainloader (cd1)%cdfn%  && call :.f6img && chainloader (cd1)%cdfn% && boot
chainloader (cd2)%cdfn%  && call :.f6img && chainloader (cd2)%cdfn% && boot
chainloader (cd3)%cdfn%  && call :.f6img && chainloader (cd3)%cdfn% && boot
errorcheck on
boot
exit


#############   动态显示 /WC2008/ISOIMGS/ ISO/IMG/IMA/GZ 文件列表   #############
:autoone
set w_menu=%imgmenu% && set return=\x7C\x7C configfile %imgmenu% \x7C\x7C configfile (md)4+8
if exist frt && set atdft=4 ! set atdft=3
echo -e debug off\ndefault %atdft%\ntimeout 20  > %w_menu%
echo -e title\nclear    >> %w_menu%
exit
:.autoimgmenu
call :autoone
echo -e title ★ 动态显示 %frt%/WC2008/ISOIMGS/ IMG/IMA/GZ 文件列表    >> %w_menu%
echo -e clear    >> %w_menu%
echo -e title =======================================================    >> %w_menu%
echo -e clear    >> %w_menu%
call :input
ls %frt%/WC2008/ISOIMGS/ | call :autoimgmenu
if exist dtmame && set rendim=%frt%/WC2008/ISOIMGS/%dtmame% && call :wdt %dtmame%
call :defaultmenu
exit
:autoimgmenu
call :makeimgmenu %1
call :makeimgmenu %2
call :makeimgmenu %3
call :makeimgmenu %4
call :makeimgmenu %5
call :makeimgmenu %6
call :makeimgmenu %7
call :makeimgmenu %8
if /i not "%9"=="" call :autoimgmenu %9
exit
:makeimgmenu
if /i "%~x1"==".img" && call :aimg %1
if /i "%~x1"==".ima" && call :aima %1
if /i "%~x1"==".gz" && call :agz %1
exit

:aimg
:aima
:agz
set amame=%1
set rendim=%frt%/WC2008/ISOIMGS/%1
call :setaname %amame%
if /i "%amame%"=="时代菜鸟DOS工具箱" set dtsbt=%amame% && set dtmame=%1 && exit
if /i "%amame%"=="MAXDOS9 DOS工具箱" && set mdmame=%1 &&  goto wm9
echo -e title --启动 %amame% \n\n  %rendim%    >> %w_menu%
echo -e WCRUN %1 %return%    >> %w_menu%
echo -e boot    >> %w_menu%
exit
:wdt
echo -e title --启动 %dtsbt% \n\n  启动 %rendim%     >> %w_menu%
echo -e WCRUN %1 %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 GHOST备份还原 \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=2    >> %w_menu%
echo -e WCRUN %1 dts 3a 6h %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 手动GHOST.EXE \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=2    >> %w_menu%
echo -e WCRUN %1 dts 3a1 %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 DiskG磁盘工具 \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=2    >> %w_menu%
echo -e WCRUN %1 dts 1c1 %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 Win密码清除器 \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=2    >> %w_menu%
echo -e WCRUN %1 dts 6a 6h %return%     >> %w_menu%
echo -e boot    >> %w_menu%
exit
:wm9
echo -e title --运行 %amame% \n\n  进入 %amame% 子菜单     >> %w_menu%
echo -e configfile %endmimg% \x7C\x7C configfile (md)4+8     >> %w_menu%
echo -e boot    >> %w_menu%
set w_menu=%endmimg%
echo -e title --启动 %amame% \n\n  启动 %rendim%     > %w_menu%
echo -e WCRUN %1 %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 GHOST备份还原 \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=1    >> %w_menu%
echo -e WCRUN %1 gh %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 DiskG磁盘工具 \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=1    >> %w_menu%
echo -e WCRUN %1 diskgen %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title --运行 Win密码清除器 \n\n  运行 %rendim% 中的组件    >> %w_menu%
echo -e set /a pext=1    >> %w_menu%
echo -e WCRUN %1 pwd %return%     >> %w_menu%
echo -e boot    >> %w_menu%
echo -e title\nclear    >> %w_menu%
echo -e title\nclear    >> %w_menu%
echo -e title --返回上一级菜单 \n\n     >> %w_menu%
echo -e configfile %imgmenu% \x7C\x7C configfile (md)4+8     >> %w_menu%
echo -e boot    >> %w_menu%
set w_menu=%imgmenu%
exit

:.autoisomenu
call :autoone
echo -e title ★ 动态显示 %frt%/WC2008/ISOIMGS文件夹下的ISO文件列表    >> %w_menu%
echo -e clear    >> %w_menu%
echo -e title =======================================================    >> %w_menu%
echo -e clear    >> %w_menu%
call :input
ls %frt%/WC2008/ISOIMGS/ | call :autoisomenu
echo -e title\nclear    >> %w_menu%
set startrun=WCRUN .autoisomenu \x26\x26 configfile %%imgmenu%% && call :wflpmenu
call :defaultmenu
exit
:autoisomenu
call :makeisomenu %1
call :makeisomenu %2
call :makeisomenu %3
call :makeisomenu %4
call :makeisomenu %5
call :makeisomenu %6
call :makeisomenu %7
call :makeisomenu %8
if /i not "%9"=="" call :autoisomenu %9
exit
:makeisomenu
if /i "%~x1"==".iso" && call :aiso %1
exit

:aiso
set amame=%1
call :setaname %amame%
echo -e title --加载 %amame% \n\n  映射 %frt%/WC2008/ISOIMGS/%1    >> %w_menu%
echo -e WCRUN %1  \x7C\x7C configfile %imgmenu% \x7C\x7C configfile (md)4+8    >> %w_menu%
echo -e boot    >> %w_menu%
exit

:input
set rimg1=首先搜索%frt%下的 /WC2008/ISOIMGS或自定义文件夹
echo -e title --输入 ISO/IMG/IMG/GZ文件名称并加载 \n\n  %rimg1% \n\n  %rimg2%    >> %w_menu%
echo -e fallback 3    >> %w_menu%
echo -e WCRUN .input    >> %w_menu%
echo -e boot    >> %w_menu%
exit

:.input
clear
set var=
echo $[0104]请按照以下规则输入:
echo
echo 搜索 根目下的 XPXP3.ISO...........输入:/xpxp3.iso
echo 搜索 MYTOOLS/DG350.IMA............输入:/mytools/dg350.ima
echo 搜索 WC2008/ISOIMGS/MYISO.ISO.....直接输入:myiso.iso
echo 搜索 WC2008/PXE_2003PE.ISO........输入:/wc2008/pxe_2003pe.iso
echo
echo $[0102]如要返回主菜单,请直接按回车。
set /p var=请输入带有后缀的文件名称(不分大小写)-->:
if exist var || goto .menu
call :open %var%
exit

:error
if "%ernum%"=="y" goto error1
set ernum=y && cdrom --init && map --hook && call :.iso2
:error1
clear
echo $[0104] 未知原因,操作失败。请确保文件没有损坏。
echo
set mapiso= && set werorr=按回车后重启,尝试 && call :mapname %path%
if /i not "%mapiso%"=="y" && set werorr=如果--MEM参数加载亦失败,请尝试再次重启,并 && echo 如果是用MAP方式加载的ISO,请在按回车后尝试用 --MEM 参数加载。
echo %werorr%设置BOOS的第一启动为:CDROM
echo
pause
if /i "%mapiso%"=="y" reboot
if /i "%@root%"=="(cd)" && WCRUN .cdrom ! configfile (md)4+8
exit

:.iso
set mapiso=
call :find %1
call :mapname %1
if exist %frt%/%path% && if /i not "%mapiso%"=="y" call :ynmap
clear
if exist %frt%/%path% && call :.f6img
if /i "%mapiso%"=="y" && set runmem=map ! set runmem=map --mem
echo && echo $[0102] 正在加载 %frt%/%path%, 请稍候 ... && echo
:.iso2   
%runmem% %frt%/%path% (0xff) || map --mem %frt%/%path% (0xff)
if /i not "%lpmum%"=="" map --e820cycles=%lpmum%
map --hook
chainloader (0xff) || goto error
boot
exit

:ynmap
clear
echo
echo $[0104]请选择加载 %frt%/%path% 的方式:
echo
echo 输入任意键并按回车(单独使用MAP方式加载,不耗费内存)
echo 直接按回车(加入 --mem 参数,将ISO写入内存并加载)
echo
set /p mapiso=输入任意键(map)/直接按回车(--mem)-->:
if /i not "%mapiso%"=="" set mapiso=y
exit


:.img
:.ima
:.gz
call :find %1
echo && echo $[0102] 正在加载 %frt%/%path%, 请稍候 ... && echo
map --mem %frt%/%path% (fd0)
map --hook
if "%pext%"=="1" call :maxend %*
if "%pext%"=="2" call :dtsend %*
chainloader (fd0)+1
rootnoverify (fd0)
exit

:maxend
cat --locatei="default=" --replace="default=1,0" --number=1 (0)/CONFIG.SYS
cat --locatei="Call M.BAT" --number=1 (0)/AUTOEXEC.BAT
set maxext= && write --offset=%?% (0)/AUTOEXEC.BAT call %~2 \r M.BAT \r
exit
:dtsend
cat --locatei="MENUDEFAULT" --number=1 (0)/CONFIG.SYS
shift && write --offset=%?% (0)/CONFIG.SYS MENUDEFAULT=text,0
cat --locatei="MENUDEFAULT" --number=2 (0)/CONFIG.SYS
shift && write --offset=%?% (0)/CONFIG.SYS MENUDEFAULT=text,0  
cat --locatei="dostools.bat" --number=1 (0)/AUTOEXEC.BAT
shift && write --offset=%?% (0)/AUTOEXEC.BAT dostools.bat %* end
exit


#############   判断并转换ZIP盘符   #############
:.hd2hd
call :.move
map (fd0) (hd0)
map --rehook
exit
:.move
set /a hd=*0x475&0xff+0x7f
if %hd%==127 goto :eof
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move

[ 本帖最后由 网虫2008 于 2012-2-20 09:51 编辑 ]
回复

使用道具 举报

3#
发表于 2012-2-19 19:44:46 | 只看该作者

回复 #2 网虫2008 的帖子

看的眼晕。。。这个还是自己来优化吧  毕竟别人有时不了解目的  特别是这种定制要求比较高的  比通用的麻烦的多
回复

使用道具 举报

4#
发表于 2012-2-19 19:52:10 | 只看该作者
虫大威武,我等下载学习了
回复

使用道具 举报

5#
发表于 2012-2-19 20:07:07 | 只看该作者

回复 #2 网虫2008 的帖子

好长的批处理啊,帮顶了。
回复

使用道具 举报

6#
发表于 2012-2-20 13:17:37 | 只看该作者
这个帖子,,在俺们低手看来,,也算是教材了
虫大谦虚了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-26 09:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表