|
本来用 lianjiang 的那个awk脚本分析ghststat.txt 获取最后硬盘分区没有问题。
可是发现 ghost -dd 有问题:
1、针对我的一个只有一个逻辑分区的硬盘 不能获取其分区表信息,具体可以看 ghststat.txt 的 713行
同样问题minito 也有,但愿这只是一个个案。
2、不能将 ghost分区标号与dos盘符一一对应列举
所以编写此脚本,通过ghststat.txt 中FilesystemManager 段的各 VolumePos 项来分析各分区的信息。
gp.awk --------------awk脚本
gp.bat --------------bat脚本
需要awk 和ghost 11.02/11.5
脚本生成 px.bat并运行之,用于将硬盘逻辑分区总个数、主引导分区总个数、最后一个逻辑分区标号、最后一个主引导分区标号分别赋值给系统变量
脚本还同时显示 ghost所能识别的整个硬盘分区序列。
win32版本:gawk和gp脚本
gp_32.rar
(78.98 KB, 下载次数: 191)
需要ghost32
dos版本:awk和gp脚本
gp.rar
(32.9 KB, 下载次数: 169)
ghststat.txt
GHSTSTAT.rar
(5.46 KB, 下载次数: 151)
太大了,直接附件上传。
硬盘序列表:
Index Size Type Vol
1.4: E: 33.12GB Logical fsfFat32 TEMP
1.1: 19.86GB Primary fsfNtfsWindowsXP
1.2: 19.64GB Logical fsfFat32 PROGRAM1
1.3: 41.07GB Logical fsfFat32
1.5: 23.51GB Logical fsfNtfsWindowsXP NTFS_DISK
1.6: 2.08GB Primary fsfFat32 RESTORE
1.7: 9.76GB Primary fsfNtfsWindowsXP Windows7
2.1: 74.52GB Logical fsfFat32 BACKUP
3.1: 3.72GB Primary fsfFat32 USB-DISK
是不是发现问题了?ghost 只识别出一个e:其他dos盘符都没有识别出对应关系 其中的1.6 1.7 为隐藏状态其他fat32 分区都已经被分配盘符了。可ghost 就是不认。在 xp32下没有这问题。
px.bat 内容
set Log_s=5
set Pri_s=4
set LastPri=3.1:
set LastLog=2.1:
gp.awk 内容 红色部分是新添加内容 用于锁定 FilesystemManager 段 附件已经重新更新上传
BEGIN {
N=0;start=0
if (x!=1) { print "Index Size Type Vol"
} else { px=0 ; pp=0; l=0; lx=0; p=0 }
}
{
if ($1=="FilesystemManager") start=1
if (substr($1,1,3)=="===") start=start+1
if (start==2) {if (x==1) {set()} else {list()}}
}
END {
if (x==1) {
print "set Log_s="l
print "set Pri_s="p
print "set LastPri="px
print "set LastLog="lx
}
}
function list() {
if ($1=="VolumePos:") {
if ($2!="") { printf "%-6s",$2; N=FNR } else { ok=0 }
}
if (N!=0) {
if (FNR==N+1) { printf "%-3s",$2}
if (FNR==N+2) { printf "%-12s",$2; printf "%-8s",$3 }
if (FNR==N+3) { printf "%-20s",$2 }
if (FNR==N+4) { print $2 }
}
}
function set() {
if ($1=="VolumePos:") {
if ($2!="") {pp=$2; N=FNR } else { ok=0 }
}
if (N!=0) {
if (FNR==N+2) {
if ($3~"Log") {l=l+1;if (pp>=lx) lx=pp}
if ($3~"Pri") {p=p+1;if (pp>=px) px=pp}
}
}
}
gp.bat 内容
@echo off
ghost -dd
cls
awk -f gp.awk -v x=1 ghststat.txt >%temp%\px.bat
awk -f gp.awk ghststat.txt
call %temp%\px.bat
if exist %temp%\px.bat del %temp%\px.bat
if exist ghststat.txt del ghststat.txt
gp.cmd 内容 xp32下
@echo off
ghost32 -dd
cls
gawk -f gp.awk -v x=1 ghststat.txt >%temp%\px.bat
gawk -f gp.awk ghststat.txt
call %temp%\px.bat
if exist %temp%\Px.bat del %temp%\px.bat
if exist ghststat.txt del ghststat.txt
[ 本帖最后由 dos时代菜鸟 于 2010-8-9 07:45 编辑 ] |
|