| 
 | 
6#
 
 
 楼主 |
发表于 2011-5-6 09:21:48
|
只看该作者
 
 
 
!BAT 
if not exist debug set debug=off 
debug %debug% 
pager off 
#判断相关文件是否已载到软驱 
if exist (fd0)/mbr52 goto start 
map --mem /BOOTLDR.IMG (fd0) || find --set-root /BOOTLDR.IMG && map --mem /BOOTLDR.IMG (fd0) 
map --hook 
 
 
 
 
#微软的工具 使用了严格的参数顺序检查,不能改变顺序,为了方便编程,决定采取相同的处理方法。 
#微软的工具 第一个参数指定要更新的引导代码类型,第二个参数指定要更新的对象 
#微软的工具 第二个参数必须是磁盘的盘符或者是启动分区,不能忽略掉 
#微软的工具 不能忽略掉第二个参数,仅执行主引导的刷新操作,本工具决定做一下改动 
 
# 本工具初步构想如下: 
# 第一个参数用于指定引导代码,或者是指定清除扇区的操作 
# 第一个参数为 clear 时 ,第二个参数必须指定硬盘 如 hd0  hd1 如果第二个参数为空 默认为hd0 
# 第二个参数设定要进行操作的对象,可以是活动分区,指定分区,或者是MBR  
# 第三个参数根据第二个参数来决定取值,如果第二个参数设定要对MBR进行操作则第三个参数必须指定硬盘 
# 如果第二个参数指定为分区操作,则第三个参数/mbr为可选,即可以同时进行DBR跟MBR的操作 
# 分区与磁盘的表示法: 采用GRUB4DOS的表示法,同样是为了简化编程 
 
:start 
if #%1==# goto help 
if /i #%1==#clear goto cl162 
 
:help 
echo bootsect {/nt52|/nt60|clear} {sys|partition|/mbr} {disk|/mbr} 
echo bootsect {/nt52|/nt60} /mbr {disk} 
echo bootsect clear {disk} 
echo bootsect {/nt52|/nt60} {sys|partition} [/mbr] 
echo bootsect /nt52 (hd0,0) 
echo bootsect /nt52 (hd0,0) /mbr 
echo bootsect /clear (hd0) 
echo bootsect /nt52 /mbr (hd0) 
goto end 
 
:cl162 
if #%2==# set disk=(hd0) && goto qcks 
debug on 
set disk=%2 && set /a leng=*0x4cb00 
if not #%leng%==#5 goto cs2cu 
set csqz=%disk:~0,3%  
if /i not #%csqz%==#(hd goto cs2cu 
set csqz=%disk:~4,1% 
if /i not #%csqz%==#) goto cs2cu 
 
#参数二取值判断 
cat --length=0 --hex %disk%+1 || goto cs2cu 
:qcks 
clear 
echo Warning! %disk% 1-62 Sectors Will be Clear! 
call sfjx 
echo -n > %disk%1+62 && goto zxcg 
goto zxsb 
 
 
:sfjx 
set /p JX=Do you want to continue? (y/n) 
if /i not #%JX%==#y  goto end 
 
 
 
 
 
 
 
 
:cs2cu 
echo The disk value: %disk% is error! 
echo The disk value: (hd0) (hd1)  
echo bootsect clear (hd0) 
goto end 
 
:zxsb 
echo Operation failed! 
goto end 
:zxcg 
echo Operation completed successfully! 
 
:end 
pause Please Enter to Exit. 
exit 
 
暂时只写了上面的部分,但是发现有个错误,一直不知道是哪儿的原因。 |   
 
 
 
 |