无忧启动论坛

标题: 一分钟内自动硬盘分区DOS批处理脚本 [打印本页]

作者: turboy    时间: 2005-1-26 00:04
标题: 一分钟内自动硬盘分区DOS批处理脚本
[这个贴子最后由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 编辑 ]
作者: CHIRS    时间: 2005-1-26 09:32
标题: 一分钟内自动硬盘分区DOS批处理脚本
.....
作者: pandorak    时间: 2005-1-26 16:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: peijian    时间: 2005-1-26 19:14
标题: 一分钟内自动硬盘分区DOS批处理脚本
[这个贴子最后由peijian在 2005/01/26 07:17pm 第 1 次编辑]

好文章!!!!!, 另外HDSTATUS.BAT还没解释是什么内容哦
作者: ldfmjn    时间: 2005-1-26 20:14
标题: 一分钟内自动硬盘分区DOS批处理脚本
好,顶。
作者: turboy    时间: 2005-1-26 21:13
标题: 一分钟内自动硬盘分区DOS批处理脚本
不好意思,昨天太晚忘了,现在补上。这就是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

作者: hdxing    时间: 2005-1-26 22:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: dm2911    时间: 2005-1-26 23:06
标题: 一分钟内自动硬盘分区DOS批处理脚本
可以选择分区大小吗?
作者: turboy    时间: 2005-1-26 23:07
标题: 一分钟内自动硬盘分区DOS批处理脚本
上面有手动的选项呀,运行后,输入“auto”就会全自动;输入“hand”就可以手动,然后一个一个的输入分区大小,就可以了。只是C盘固定为8G,因为我为那朋友设计的家用机分区差不多这样就好了。
作者: cq2000    时间: 2005-1-27 09:30
标题: 一分钟内自动硬盘分区DOS批处理脚本
用ghost刻好一个分好区的空盘镜象,再GHOST到没分区的硬盘上那不更快?
作者: wang6610    时间: 2005-1-27 10:46
标题: 一分钟内自动硬盘分区DOS批处理脚本
请楼主上传STRINGS.EXE
作者: wang6610    时间: 2006-11-8 13:50
turboy 大侠什么时候再把它修改一下,让它真正能用。


                                                 谢谢!
作者: chowyu    时间: 2006-11-22 14:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: jhkwgij    时间: 2006-11-22 17:12
汗~我看不明白这些批处理命令~建议搞个软件来下载研究下!!
作者: rock269    时间: 2006-11-22 17:55
好方法,这下新硬盘分区方便多了
作者: lintel    时间: 2006-11-22 18:05
还可以,收藏
作者: yy5409    时间: 2006-11-23 17:24
不错,谢谢,下了收藏!!!
作者: 弄潮儿-NET    时间: 2006-11-23 17:49
弄个IMG出来下载试试...懒得去到处找了
作者: chinaren12    时间: 2006-11-23 20:11
楼主的批处理构思确实好,但是我下下来之后却发现少这少那的,希望你能打包上传一下,让我们一堵风采
作者: 坏蛋哥哥    时间: 2006-11-25 20:24
怎么有表情在
作者: ciao    时间: 2006-11-25 23:19
好像很方便的样子
作者: ligang92781    时间: 2006-11-30 08:58
ghost 只能按比例来分区吧~~~
还是楼主的比较实用
作者: 3inysy    时间: 2007-4-8 09:31
已阅,顶!!!!!!!!!!!!!!!!
作者: turboy    时间: 2007-4-8 20:46
看到这么多人还在关心,就把那些东西全翻出来贴到1楼里供朋友们下载。
作者: kekrto    时间: 2007-4-8 23:09
路过哦.顶一下.!!
作者: StarTsai    时间: 2007-4-9 12:05
好东东下载中..........
作者: 2011ML丨叼四郎    时间: 2020-12-21 04:29
顶下先,这东东,完成自动部署不错
作者: wilot    时间: 2020-12-31 04:43
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3