无忧启动论坛

标题: 用gdisk实现dos下自动格式化c:以外的所有分区(包括ntfs) [打印本页]

作者: dos时代菜鸟    时间: 2010-1-6 18:56
标题: 用gdisk实现dos下自动格式化c:以外的所有分区(包括ntfs)
如果启动的是还原分区上的dos系统,那还原系统所在分区一定是c:
有的时候用ghost或者TI 等还原系统前,需要自动格式化还原系统所在分区以外的全部分区,以避免其他分区的病毒在进入系统的时候再次感染。而dos下用软件手动对ntfs分区的格式化有很些麻烦,可如果不格式化,一旦这些ntfs分区上有病毒呢?
所以考虑编辑此脚本,利用awk分析分区结构,用gdisk格式化除c盘以外的全部分区,NTFS分区仍然被格式化成NTFS格式。

gdf2.bat  内容如下:
-----------------
@echo off
  if not "%2"=="" goto gdf2
  set d=%1
  if *%1==* set d=C:
  if exist disklist.txt del disklist.txt
cls
echo Please wait ....
gdisk |awk 'NF>0 && $1!="Disk" && $1!="No" {print $0}' >disklist.txt
awk '{n=FNR} END {print "set disks="n}' disklist.txt >disks.bat
call disks.bat
del disks.bat
if *%disks%==*0 goto error0
awk '{print "call gdf2.bat %d% "$1}' disklist.txt >disks.bat
call disks.bat
del disks.bat
goto end

:gdf2
  cls
if exist format.gd del format.gd
echo Making format.gd for awk_script.....#%2
gdisk %2|awk -f format.awk -v d=%d% >format.gd
type format.gd
echo Press any key to continu . Ctrl+C to cancel!
pause>nul
echo Formating HD_%2's partition ....(but %d%)
gdisk %2 /batch:format.gd
  del format.gd
goto end2

:error0
echo No disk!
goto end

:end
set disks=
set d=
if exist disklist.txt del disklist.txt
ECHO.
ECHO OK!
:end2


format.awk 内容如下:
-----------------
BEGIN { d=toupper(d)}
{
if ((substr($0,20,3)=="PRI" || substr($0,20,3)=="LOG")&&($1!=d)) {
  n=$1;if ($1~":") n=$2
  gs="";if (substr($0,53,10)~"NTFS") gs="/ntfs"
  print "/del /p:"n" /y"
  print "/cre /"substr($0,20,3)" /for /q "gs" /y"
  if (substr($0,15,1)=="A") {print "/act /p:"n" /y"}
}

}
END {}

解说:
1、利用 gdisk 获取硬盘信息 生成 disklist.txt
2、利用 awk 分析disklist.txt 内容 先后 生成 另各 disks.bat ,分别获取硬盘个数 和用于调用 gdf2.bat 中的 :gdf2 段
3、gdf2段,用于通过 awk 调用 format.awk 分析 各硬盘中各个分区 信息,生成逐个删除、创建该分区的gdisk指令,并将指令传递给 format.gd
4、gdisk 调用 format.gd 实现 对所有硬盘所有分区中除指定盘以外分区的格式化

本脚本利用gdisk/awk 调用 format.awk 实现对除C:以外各硬盘分区格式化成
如果不是NTFS将格式化成默认的FAT*,如果是NTFS将格式化为NTFS
附带参数 %1 可以指定一个不格式化的的分区,比如: gdf2 D:,默认识 c:

[ 本帖最后由 dos时代菜鸟 于 2010-9-7 11:05 编辑 ]

gdf2.rar

825 Bytes, 下载次数: 219, 下载积分: 无忧币 -2


作者: dos时代菜鸟    时间: 2010-1-6 20:39
适用于多个硬盘 多个分区

最合适用在 eais 分区 上用 dos 做单系统还原前的 全分区 格式化。防止病毒再生,干脆全干掉,哈哈。

[ 本帖最后由 dos时代菜鸟 于 2010-9-7 11:47 编辑 ]
作者: dos时代菜鸟    时间: 2010-1-6 20:43
注意操作前,应确保硬盘没有未被分配的空间,否则有可能被划分到邻近分区中。
作者: fvptk    时间: 2010-1-6 22:24
嗯,这个方法不错的,
作者: 老徐    时间: 2010-1-11 18:31
楼主能不能帮忙给改造一段代码,前些日子一直找方案,
前提原因和楼主类似
但是我做备份的系统都是最后一个分区,从dos下面进去,有可能是c,也有可能是后面的,因为我用了2套方案做备份,一个是F9的还一个是hpa的,但肯定是最后一个分区。
目标就是删除除了最后一个分区的所有分区,
作者: dos时代菜鸟    时间: 2010-1-11 18:44
原帖由 老徐 于 2010-1-11 18:31 发表
楼主能不能帮忙给改造一段代码,前些日子一直找方案,
前提原因和楼主类似
但是我做备份的系统都是最后一个分区,从dos下面进去,有可能是c,也有可能是后面的,因为我用了2套方案做备份,一个是F9的还一个是 ...


1、不知道 gdisk 能否识别 hpa 分区
2、通常dos启动的分区一定是c盘啊
作者: xpxpxp1    时间: 2010-1-11 19:15
最好直接做一个这样的软件(如图的样子):
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一.
1.一键删除第一硬盘上的全部分区,并自定义容量在第一硬盘上自动创建一个激活的ntfs或fat32可选的主分区
2.一键删除你选中的任一硬盘上的全部分区
3.在你选中的任一硬盘上创建硬盘分区
二.
1.自动格式化第一硬盘上的主分区

2.自动格式化第一硬盘上主分区以外的所有分区
3.自动格式化你选中的任一硬盘上的任一分区


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

期待中....

[ 本帖最后由 xpxpxp1 于 2010-1-11 21:01 编辑 ]

未命名3333.JPG (92.02 KB, 下载次数: 110)

未命名3333.JPG

作者: dos时代菜鸟    时间: 2010-1-11 20:33
原帖由 xpxpxp1 于 2010-1-11 19:15 发表
最好直接做一个这样的软件(如图的样子):
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一.
1.一键删除第一硬盘上的全部分区,并自定义容量在第一硬盘上自动创建一个激活 ...


首先:硬盘的第一分区不一定是c:盘
其次:你要的功能看 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158553&extra=page%3D2 应该可以满足。

[ 本帖最后由 dos时代菜鸟 于 2010-1-11 20:34 编辑 ]
作者: kfox29    时间: 2010-1-20 21:01
谢谢分享
下载备用
作者: 老徐    时间: 2010-1-24 08:39
原帖由 老徐 于 2010-1-11 18:31 发表
楼主能不能帮忙给改造一段代码,前些日子一直找方案,
前提原因和楼主类似
但是我做备份的系统都是最后一个分区,从dos下面进去,有可能是c,也有可能是后面的,因为我用了2套方案做备份,一个是F9的还一个是 ...



改造能力有限,实在没有好方法了,当年程序没有学好,半路出家,基础太薄弱了。
现在采用了一个最笨的方法,解决这个问题。
因为通常给客户分5各分区,最后一个做隐藏备份,还剩下4个,干脆做了一个批处理,ghost一个空白的镜像到硬盘第2、3、4分区,从隐藏分区备份的文件恢复第一个分区,基本上能解决把客户所有的可用分区解决干净了。
作者: kfyyhp    时间: 2010-1-25 09:01
虽然我不懂编程,还是要支持一下!
作者: chriver    时间: 2010-1-26 08:42
学习了,谢谢分享
作者: dos时代菜鸟    时间: 2010-9-7 10:57
2010.09.06 更新 具体看1楼
支持多硬盘 ,可自定义一个不格式化的盘符。
gdf2.rar (825 Bytes)

[ 本帖最后由 dos时代菜鸟 于 2010-9-7 12:26 编辑 ]




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