!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)
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字符。
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 提高速度
原帖由 lianjiang 于 2010-9-26 19:47 发表
取得这些信息,一般都是用于一键恢复。
对于ghost,image等备份内核而言,grub4dos取得的信息,算不算是第三方工具?
个人倾向于认为,使用备份内核本身取得的信息更符合不依赖第三方工具的提法。
比如,用g ...
原帖由 不点 于 2010-9-29 06:51 发表
有没有可能直接在 grub4dos 下进行类似于 ghost 的操作?
首先,制作一个分区的映像,制作映像的时候,要像 ghost 一样,把没用的 pagefile 之类的文件删除掉,这当然比较麻烦。然后,用 gzip 压缩它。最后, ...
原帖由 tuxw 于 2010-11-4 00:17 发表
@chenall
管道有没有可能改成允许多个串接的?
WENV echo (hd${disk},${active}) | DISKID | WENV set GH_ACTI=
现在不能连续使用2个管道,所以只能从 0x4FF00 获取结果
欢迎光临 无忧启动论坛 (http://wuyou.net/) | Powered by Discuz! X3.3 |