|
|
[这个贴子最后由turboy在 2005/01/26 09:15pm 第 1 次编辑]
这是我给一个开装机店的朋友写的一个DOS批处理脚本,用途是按一定的规则自动为新硬盘分区并格式化,运行时数十G的硬盘只中不到一分钟就分区并格式化好了,其中使用到了几个工具:
GDISK.EXE GHOST软件包中附带的一个基于命令行的分区工具,功能强大
STRINGS.EXE 这是一个DOS批处理增强程序
XZL.COM 袖珍龙——这是我所见过的最小巧的DOS汉字系统了,才53KB
这些软件,在“中国DOS联盟”中都可以下载,也有用法介绍。下面是代码:
@ECHO OFF
:L_CCDOS
XZL
CLS
REM 检查硬盘参数
CALL HDSTATUS.BAT
ECHO *------------------------------------------------*
ECHO * 易老师自动分区工具 1.0 *
ECHO *------------------------------------------------*
ECHO 此计算机中所安装硬盘信息如下:
ECHO 硬盘编号: %HD%
ECHO 总容量: %HDSIZE%
ECHO 现有分区数: %PARTS%
ECHO 警告:
ECHO 分区是一个危险的操作, 下面的程序将导致硬盘中的
ECHO 所有数据丢失。故此程序只供专业技术人员使用,其他人
ECHO 员错误操作造成的损失与作者无关!
ECHO *------------------------------------------------*
ECHO 全自动分区公式 C:8GB + D:40%% + E:30%% + F:30%%
REM 计算各分区大小
STRINGS EXTSIZE= SUB %HDSIZE%,8000
STRINGS EXTSIZE= DIV %EXTSIZE%,10
STRINGS HDPARTD= MUL %EXTSIZE%,4
STRINGS HDPARTE= MUL %EXTSIZE%,3
STRINGS HDPARTF= SUB %HDSIZE%,8000,%HDPARTD%,%HDPARTE%
ECHO 当前方案 %HDSIZE%= C:8000M + D:%HDPARTD%M + E:%HDPARTE%M + F:%HDPARTF%M
ECHO *------------------------------------------------*
ECHO 输入“auto”开始全自动分区
ECHO 输入“hand”开始手动分区
ECHO 输入其他值退出
ECHO *------------------------------------------------*
STRINGS CHOICE= ASK ------------请慎重考虑后再输入你的选择:
STRINGS CHOICE= UPPER %CHOICE%
IF %CHOICE%#==AUTO# GOTO AUTO
IF %CHOICE%#==HAND# GOTO HAND
GOTO END
:AUTO
GDISK %HD% /DEL /ALL
GDISK %HD% /CRE /PRI /SZ:8000 /FOR /Q /V:SYSTEM
GDISK %HD% /CRE /EXT
GDISK %HD% /CRE /LOG /SZ:%HDPARTD% /FOR /Q /V:DATA
GDISK %HD% /CRE /LOG /SZ:%HDPARTE% /FOR /Q /V:OTHER
GDISK %HD% /CRE /LOG /FOR /Q /V:BACKUP
SET HDPARTD=
SET HDPARTE=
SET HDPARTF=
GOTO OK
:HAND
REM C盘
STRINGS HDPARTC= ASK 请输入%PCHAR%盘容量(最大%hdsize%MB):
GDISK %HD% /DEL /ALL
GDISK %HD% /CRE /PRI /SZ:%HDPARTC% /FOR /Q /V:SYSTEM
GDISK %HD% /CRE /EXT
REM D盘、E……
SET PNO=68
STRINGS MAXSIZE= SUB %HDSIZE%,%HDPARTC%
:P2_LOOP
STRINGS PCHAR= CHAR %PNO%
STRINGS ASKSIZE= ASK 请输入%PCHAR%盘容量(单位MB,直接回车建最大%MAXSIZE%):
IF %ASKSIZE%#==# GOTO P2_OK
GDISK %HD% /CRE /LOG /SZ:%ASKSIZE% /FOR /Q /V:LOG_%PCHAR%
STRINGS MAXSIZE= SUB %MAXSIZE%,%ASKSIZE%
STRINGS PNO= ADD %PNO%,1
GOTO P2_LOOP
:P2_OK
GDISK %HD% /CRE /LOG /FOR /Q /V:LOG_%PCHAR%
SET ASKSIZE=
SET MAXSIZE=
SET PNO=
SET PCHAR=
SET HDPARTC=
GOTO OK
:OK
GDISK %HD% /ACT /P:1
GDISK %HD% /MBR
ECHO 分区完成!请启动计算机,安装操作系统。
SET HDSIZE=
SET HDPART=
PAUSE>NUL
XZL /Q
GOTO END
:END
ECHO 已退出
不好意思,昨天太晚忘了,现在补上。这就是HDSTATUS.BAT的内容,主要就是利用GDISK来探测出硬盘的容量等参数,并依此设置相应的环境变量供AUTODISK.BAT使用。
HDSTATUS.BAT
@ECHO OFF
IF %1#==SETVAR# GOTO SETVAR
STRINGS TMPS= RIGHT %TMP%,1
SET TMPFILE=\HDSTATUS.TXT
IF %TMPS%#==\# SET TMPFILE=HDSTATUS.TXT
SET TMPS=%TMP%%TMPFILE%
SET TMPFILE=
SET LL=1
GDISK /STATUS>%TMPS%
:LOOP
STRINGS HDS= READ %TMPS%,%LL%
STRINGS TMPSTR= MID %HDS%,1,4
STRINGS LL= ADD %LL%,1
IF ';%TMPSTR%';==';Disk'; GOTO FOUND
GOTO LOOP
:FOUND
STRINGS HDS= READ %TMPS%,%LL%
SET TMPSTR=
SET TMPS=
SET LL=
CALL %0 SETVAR %HDS%
GOTO END
:SETVAR
SET HDS=
SET HD=%2
SET PARTS=%3
SET HDSIZE=%7
:END
这里是源代码和工具:
autofdisk.part1.rar
(200 KB, 下载次数: 817)
autofdisk.part2.rar
(172.31 KB, 下载次数: 582)
[ 本帖最后由 turboy 于 2007-4-8 08:42 PM 编辑 ] |
|