|
典型脚本解说 disks2.bat
ghost\disks2.bat
这是ghost搜索恢复中的一个脚本。
@echo off
:1
gdisk %1 /raw >diskx.txt
awk '/PRIMARY/;/LOGICAL/' DISKX.TXT |AWK '{n+=1;print "%1:"n,$4}' >disksx2.txt
strings fs=filesize disksx2.txt
if *%fs%*==*0* goto end
:2
gdisk %1 >diskx.txt
awk '/PRIMARY/;/LOGICAL/' DISKX.TXT |awk '{print substr($0,2,2),substr($0,15)}' >diskx2.txt
AWK '{n+=1;printf "%%c",91;print "%1:"n"]",$0}' diskx2.txt >>diskxx.txt
AWK '{n+=1;if ($1~":") print "%1:"n ,$1}' diskx2.txt >>diskx21.txt
AWK '{n+=1;if ($1!~":") print "%1:"n}' diskx2.txt >disksx3.txt
:3
strings fs=filesize disksx3.txt
if *%fs%*==*0* goto end1
strings l=linesize disksx3.txt
strings l=add %l%,1
set n=0
:loop1
strings n=add %n%,1
strings ln0=read disksx3.txt,%n%
type disksx2.txt|find /i "%ln0%" |nset /l1 ln1=$2
echo "0C,1C,04,14,06,16,0B,1B,07,17,01,11,0E,1E,83," |FIND /I "%ln1%," >nul
if not errorlevel 1 echo %ln0% %ln1% >>ntfs.txt
if *%n%*==*%l%* goto end1
goto loop1
:end1
set n=
set l=
set ln0=
set ln1=
:end
if exist diskx.txt DEL DISKX.TXT
if exist diskx2.txt del diskx2.txt
if exist disksx2.txt del disksx2.txt
if exist disksx3.txt del disksx3.txt
set fs=
解说============================
一、用法
附带参数 %1 是1,2,3,4...用来表示硬盘序号,比如:disks2 1 , disks2 2 , disks2 3 ....
二、功能
生成3个文件
diskxx.txt 包含硬盘全部主引导分区和逻辑分区,并标注有ghost使用的分区标号,符合wbat box 调用要求,为以后制作wbat box界面左准备。
diskx21.txt 包含硬盘dos启动时分配了盘符的分区对应的标号和盘符
ntfs.txt 包含硬盘上可以被ifsdrv驱动而没有被dos正常分配盘符的分区对应的标号和id
三、所需第三方软件
gdisk 11.02 ghost的分区软件
awk 文本文件操作工具
strings 文本字符操作工具
find dos的文件内文本查找工具
四、脚本说明
第1段:
1、gdisk /raw 命令把硬盘各分区信息传递给文件 diskx.txt
2、
a、用 awk 对diskx.txt 进行筛选,挑出只包含逻辑分区和主引导分区的记录行
b、把a步得出的结果通过管道交给 awk,AWK为这些分区标注ghost专用分区标号,生成一个包含各分区专用标号和id的文件 disksx2.txt
3、如果DISKSX2.TXT 文件的体积为 0 说明该硬盘没有可用分区,就退出脚本
第2段
1、GDISK 命令把硬盘各分区信息传递给文件 DISKX.TXT
2、类似第一段第2步,用AWK把主引导分区和逻辑分区的盘符、卷标、类型、大小等信息生成文件DISKX2.TXT
3、用AWK为DISKX2.TXT包含的各分区添加GHOST专用分区标号并重新生成文件DISKXX.TXT.这个DISKXX.TXT 的结构适合WBAT作为BOX调用。
4、用AWK把DISKX2.TXT中有盘符的分区标记GHOST专用分区标号并输出成DISKX21.TXT
5、用AWK把DISKX2.TXT中没有分配盘符的分区对应的GHOST专用分区标号输出成DISKSX3.TXT
第3段
通过STRINGS 和GOTO 制作循环,把DISKSX3.TXT记载的分区标号逐一根据DISKSX2.TXT中对应的ID进行核对。如果分区对应的ID符合IFSDRV加载要求,说明该分区可以被IFSDRV加载。把这些分区对应的分区标号和ID传递给NTFS.TXT
end段
善后处理,删除过程中无用的文件。 |
|