| 
 | 
 
本来用 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 编辑 ] |   
 
 
 
 |