|
如果启动的是还原分区上的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
|