| 
 | 
 
[2010-12-01]新版WENV已内置GPART命令,使用更简单,以前的方法退休了。 这里下载新版:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=182254&page=100#pid2103878 
  
[2010-11-19] 
因为WENV一直在变化,本帖停止更新,以后GPART.BAT将作为一个标准批处理样本随最新的WENV一起打包上传 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=159851&extra=page%3D1 
 
[2010-11-08] 
 
GPARTS.rar
(13.62 KB, 下载次数: 237)
 
 
使用方式非常简单了,先指定目标硬盘,再调用批处理即可 
 
 
压缩包中已包含了所需的两个外部命令 WENV, DISKID 
配合最新版grub4dos使用,下载地址 
http://code.google.com/p/grub4dos-chenall/downloads/list 
!BAT 获取 G4D_DISK 指定硬盘的活动分区号与最后分区号 
:成功则生成以下4个变量 
WENV (reset GP_G4D_A ; reset GP_G4D_L ; reset GP_GH_A ; reset GP_GH_L) 
:目标硬盘 
WENV get G4D_DISK || WENV (echo variable G4D_DISK not found ; call kernel) 
WENV call cat --length=0 (hd${G4D_DISK})+1 || WENV (echo (hd${G4D_DISK}) not found ; call kernel) 
:硬盘分区信息 
debug status | WENV set -t _G_DEBUG= && WENV set _G_DEBUG=${_G_DEBUG## } && debug 1 
WENV call geometry (hd${G4D_DISK}) | WENV set GP_G4D_A= && WENV set GP_G4D_L=${GP_G4D_A} 
:截取结果 
WENV check "active"<-"${GP_G4D_A}" (set GP_G4D_A=$${GP_G4D_A%%, active} ; set GP_G4D_A=$${GP_G4D_A## }) 
WENV check "num: "<-"${GP_G4D_L}" (set GP_G4D_L=$${GP_G4D_L##num: } ; set GP_G4D_L=$${GP_G4D_L%%,}) 
:转换为GHOST格式 
WENV get GP_G4D_A && WENV echo (hd${G4D_DISK},${GP_G4D_A}) | DISKID | WENV set -t GP_GH_A= && WENV set GP_GH_A=${GP_GH_A## } 
WENV get GP_G4D_L && WENV echo (hd${G4D_DISK},${GP_G4D_L}) | DISKID | WENV set -t GP_GH_L= && WENV set GP_GH_L=${GP_GH_L## } 
:恢复环境 
WENV (call debug ${_G_DEBUG} ; reset _G_DEBUG)  
 
[2010-11-03] 
最新方法见:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=159851&page=68#pid2077571 
太简单了,只需要一个Grub4Dos批处理 
需要新版的WENV(支持变量子串查找) 
需要新版的grldr(支持批处理和菜单中使用管道) 
 
[2010-09-29]更新 
 
GPARTS.rar
(2.48 KB, 下载次数: 213)
 
1.新了解了两个命令的用法 
  parttype (hdx,y) 可以获取分区类型 
  makeactive --status (hdx,y) 可以判断是否活动分区 
  因此,仅就获取分区号而言,不需要指定缓冲区了。 
  但我仍然保留了缓冲区,因为…… 
2.使用了新的返回菜单调用方法 
  GP_MENU 变量改为 GP_CMD 
  原传递菜单文件 
  WENV set GP_MENU=/my_menu.lst 
  改为 
  WENV set GP_CMD=configfile /my_menu.lst 
   
  这样不仅可以传一个菜单文件名进来,甚至可以传一个比较复杂的命令(可以在返回前干一些其它的事件),如 
  WENV GP_CMD=clear\ngeometry (hd0)\npause press any key to continue...\nconfigfile /my_menu.lst 
  这个命令首先会写入缓冲区(WENV不能直接run configfile命令),所以这条复合命令的长度不能超过缓冲的大小0x50。但用户可以使用的总长是0x50-1个字节,因为不管用户命令是否以\0结束,gparts.lst将写入缓冲区时都会在最后加一个\0字符。  
 
[2010-09-29] 
基于GPARTS.LST获取分区号的“一键gohst”演示版及xDOS介绍 
 
[2010-09-26]更新: 
 
GPARTS.rar
(2.51 KB, 下载次数: 181)
 [2010-09-26] (忘了上传更新的附件,补上) 
1.硬盘未分区时,返回GP_LAST=0,取消返回变量STR_LAST(之前返回X:0,减少无效的变量名占用) 
2.活动分区不存在时,GP_ACTI=0,取消返回STR_ACTI变量(之前返回X:0,减少无效的变量名占用) 
  经此改动,调用gparts.lst后,肯定会返回的变量是GP_LAST。 
  如要防止菜单循环调用,请使用 WENV get GP_LAST || configfile ../gparts.lst 
3.精简了内部临时变量,并统一以 "_G_" 为前缀,清理时比较清楚 
4.默认 debug off 提高速度  
 
  首先用两分法找到最大的有效分区号,再读取分区表,判断4个表项中有效的主分区数就可以算出总分区数(实际上就是Ghost所用的最后分区号码)。分析主分区表同样可以确定活动分区编号。 
  这个有什么用呢?做过“一键ghost”类工具的应该立即能想到吧? 
 
#>>>>>>>>>>>>>>>>>>>>>>>>>>>> 文件注释 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
#删除文件注释不影响菜单功能 
#文件: gparts.lst 
#功能: 查找活动分区、最后分区(ghost)编号 
 
#入口: 
# DISK  待查找的硬盘(Ghost)编号,必须指定 
# GP_MENU  返回的菜单文件名 
 
#出口: 
# GP_ACTI  活动分区号, 同时写入地址ADDR_A(如已指定) 
# GP_LAST  最后分区号, 同时写入地址ADDR_L(如已指定) 
# STR_ACTI 活动分区字符串(DISK:GP_ACTI) 
# STR_LAST 最后分区字符串(DISK:GP_LAST) 
 
#可调整参数 
# ADDR_A  活动分区号写入地址, 默认 0x60020 
# ADDR_L  最后分区号写入地址, 默认 0x60024 
# ADDR_DEF 若设置此变量(任意值),上面2个变量使用默认地址 
# ADDR_BUF 指定缓冲区地址, 未设定时默认0x60040(缓冲大小0x50字节) 
# GP_PARTS 若设置此变量(任意值),计算出分区数 GP_LAST 就返回 
#<<<<<<<<<<<<<<<<<<<<<<<<<<<< 文件注释 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
 
1.最简单的用法 
WENV set DISK=1      // 指定待分析的硬盘号 
WENV set GP_MENU=.../yourmenu.lst // 指定返回的菜单文件名 
configfilg .../gparts.lst   // 分析磁盘,完成后自动调用 yourmenu.lst 
返回后会增加4个环境变量 GP_ACTI, GP_LAST, STR_ACTI, STR_LAST 
 
2.调整参数 
  因为 gparts.lst 要分析主分区表,需要 0x50 字节的缓冲区来保存复制的分区表,默认使用 0x60040-0x6008F 内存块,如果跟自己的使用环境冲突,可以指定缓冲区地址 
WENV set DISK=1      // 指定待分析的硬盘号 
WENV set GP_MENU=.../yourmenu.lst // 指定返回的菜单文件名 
WENV set ADDR_BUF=0x60040   // 指定自己的缓冲区首地址 
configfilg .../gparts.lst   // 分析磁盘,完成后自动调用 yourmenu.lst 
 
3.显式指定 ADDR_BUF=0x60040 与默认使用 0x60040 的区别 
  不论是否指定ADDR_BUF,在 gparts.lst 被调用期,这个变量名都是存在的,但默认返回后会自动清掉。如果用户显式指定ADDR_BUF,则返回会变量名仍然保留。 
 
 
GPARTS.rar
(2.51 KB, 下载次数: 193)
 
 
[ 本帖最后由 tuxw 于 2010-12-11 12:28 编辑 ] |   
 
 
 
 |