无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 15116|回复: 42
打印 上一主题 下一主题

[分享] 把chenall老大的最新QGHO提取出来做成了img镜像,供大家grub4dos下调用

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-20 20:29:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把chenall老大的最新QGHO提取出来做成了img镜像,供大家grub4dos下调用

img调用菜单写法
title 【 t 】  [QGHO]一键备份还原
map --mem ()/BOOT/IMGS/GHOST.IMG (fd0) || find --set-root /BOOT/IMGS/GHOST.IMG && map --mem ()/BOOT/IMGS/GHOST.IMG (fd0)
map --hook
command (fd0)/BOOT/preload.bat
PS图片:


附件上传,请使用。

(另外还有来自一键区的mygamexxx 的修改版   mygamexxx本人直接提供,第二页下载。)

[ 本帖最后由 tingyue-wu 于 2011-10-2 13:43 编辑 ]

qgho中文.rar

107 Bytes, 下载次数: 356, 下载积分: 无忧币 -2

2#
发表于 2011-9-20 20:37:52 | 只看该作者
板凳。收藏了。。。。
回复

使用道具 举报

3#
发表于 2011-9-23 12:30:58 | 只看该作者
地板也要收藏了
回复

使用道具 举报

4#
发表于 2011-9-23 12:35:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
发表于 2011-9-23 12:49:15 | 只看该作者
又多一种使用方式了。。。
回复

使用道具 举报

6#
 楼主| 发表于 2011-9-23 15:44:14 | 只看该作者
晚上提供中文版的qgho镜像
回复

使用道具 举报

7#
发表于 2011-9-23 16:43:47 | 只看该作者
等待楼主的中文版 支持
回复

使用道具 举报

8#
 楼主| 发表于 2011-9-23 20:23:57 | 只看该作者
中文版qgho已经上传
回复

使用道具 举报

9#
发表于 2011-9-23 22:14:14 | 只看该作者

回复 #8 tingyue-wu 的帖子

mygamexxx对chenall的qgho的文件结构做了太大的改动,当chenall更新时,用户不方便自行更新,只能被动等待,这样对用户不太友好。从为用户考虑的角度来说,吸收mygamexxx的思想,保持chenall原本的文件结构,精简不必要的文件是一个更好的方案。
回复

使用道具 举报

10#
发表于 2011-9-23 22:47:21 | 只看该作者
英文的菜单无法运行 中文的提示找不到show.bat
回复

使用道具 举报

11#
发表于 2011-9-24 08:20:12 | 只看该作者
中文版的全部文件放到img中,map到(fd0),是有问题的,因为程序运行时以程序文件和目录所在分区为备份映像的存放位置,所以变成了映像放置在(fd0),肯定存在问题。
并且内置菜单由于各种特殊的需要可以进行修改(如备份恢复对象需要修改,默认是1:1,有可能是1:2;/noide参数可能需要添加或删除;备份文件名称可以自定义修改;延时时间的修改等等),而放置于IMG中每次修改必须修改IMG文件比较麻烦。

不过这倒是提醒了我,可以做成只有一个grub4dos的菜单文件和一个img映像。

[ 本帖最后由 mygamexxx 于 2011-9-24 08:36 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2011-9-24 09:06:38 | 只看该作者

回复 #10 ren001 的帖子

我自己没有问题呀。


______________________


发现问题了 因为我的硬盘上有show.bat文件(修改时用的),所以没发现问题。现在我在改改吧。谢谢你的提醒

[ 本帖最后由 tingyue-wu 于 2011-9-24 09:56 编辑 ]
回复

使用道具 举报

13#
发表于 2011-9-24 09:55:36 | 只看该作者
菜单一模一样 镜像在C:\BOOT\IMGS
回复

使用道具 举报

14#
 楼主| 发表于 2011-9-24 09:57:11 | 只看该作者

回复 #13 ren001 的帖子

不好意思 是我的问题 原因在12楼
回复

使用道具 举报

15#
 楼主| 发表于 2011-9-24 11:49:58 | 只看该作者

回复 #11 mygamexxx 的帖子

确实发现问题。
所有批处理文件在运行时都发生error 30:invalid argument
错误  
请问怎么修改批处理
例如show.bat怎么改?
!BAT
%~dp0vfont %~dp0show.exe
echo
%~dp0diskid
cat --skip=0x4ff00 (md)+0x300 | set diskid=
if %diskid%==%p1% && echo -P:1208 $[1104]Error: $[0106]Program can not be placed in the partition to be backed up.  && pause --wait=%t%
if %diskid%==%p1% && goto Default
if %gho%==1 echo -P:1422 $[0105]纮羴聜脙膭艆 $[0106]!!!$[0105] $[0105] 茊 $[1106]Alt+B$[0105] 菄葓纮羴蓧蕣
if %gho%==0 echo -P:1424 $[0105]蓧蕣纮羴藡虒蛵$[0106]!!!$[0105] 茊 $[1106]Alt+B$[0105] 纮羴蓧蕣
if %gho%==2 echo -P:1432 $[0105]螏蠌蓧蕣茊 $[1106]F10
echo -P:2225 $[0102]蓧蕣纮羴 螏蠌 袗褢    $[0103]%@DATE%
echo -P:04-28 $[0101]Alt+B   $[0107]纮羴蓧蕣
echo -P:08-28 $[0105]Alt+S   $[0107]讞貥.GHO
%~dp0do.bat
回复

使用道具 举报

16#
 楼主| 发表于 2011-9-24 12:30:32 | 只看该作者

回复 #9 dihuo0 的帖子

那么英文的那个版本就是精简文件的。chenall老的东东,原滋原味。
其实要中文化也可以的,把批处理文件编码改成utf-8  ,调用img的菜单事先加载fonts文件,然后镜像的qgho文件中的
……
::生成QGHO主菜单项目
echo -e title ========Current: ** %^QGHO.OS% ** on %^QGHO.SRC% ========== \necho -e %^QGHO_HLP%\npause >> %q.main%
echo title 1. Default: auto check\n%QGHO_HLP% >> %q.main%
echo command QGHO auto >> %q.main%
echo title 2. Backup\n%QGHO_HLP% >> %q.main%
echo command QGHO pdump >> %q.main%
echo title 3. Restore\n%QGHO_HLP% >> %q.main%
echo command QGHO pload >> %q.main%
echo title 4. Custom Restore\n%QGHO_HLP% >> %q.main%
echo command QGHO CUSTOM >> %q.main%
echo title 5. QGHO Configuration\n%QGHO_HLP% >> %q.main%
echo command QGHO config >> %q.main%
……
蓝色部分改成中文字就好了。

[ 本帖最后由 tingyue-wu 于 2011-9-24 12:32 编辑 ]
回复

使用道具 举报

17#
发表于 2011-9-24 16:51:50 | 只看该作者
将全部文件打包,除一个菜单文件外,请测试。
使用方法:
将文件解压至非要备份恢复的分区的根目录,用GRLDR加载解压出来的onekey目录中的onekey.lst。
备份文件将放置于所在分区的根目录。
searth.bat进行了完善,消除了搜索到的GHO文件位于要恢复的分区用于恢复的风险。


[ 本帖最后由 mygamexxx 于 2011-9-25 23:12 编辑 ]
回复

使用道具 举报

18#
 楼主| 发表于 2011-9-24 20:46:31 | 只看该作者

回复 #17 mygamexxx 的帖子

map --mem到了fd0以后,程序处于内存中。
if %diskid%==%p1% && echo -P:1208 $[1104]Error: $[0106]Program can not be placed in the partition to be backed up.  && pause --wait=%t%
if %diskid%==%p1% && goto Default
这个应该不需要了吧。

还有,备份文件位置也应该选在(hd0,4)或最后一个逻辑分区上比较好。
楼上考虑到这个不?
回复

使用道具 举报

19#
发表于 2011-9-24 22:21:23 | 只看该作者
这个要修改很容易,只是考虑到分区的复杂性才这样设置,极端情况:比如没有hd0,4(没有逻辑分区)或最后逻辑分区可能是linux文件系统等,要更改只要更改菜单文件中一句语句就行了,先测试吧。

[ 本帖最后由 mygamexxx 于 2011-9-24 22:45 编辑 ]
回复

使用道具 举报

20#
发表于 2011-9-24 22:28:25 | 只看该作者
chenall大的QGHO是智能型的(根据主分区激活情况和系统类型确定要备份的分区),使用很方便,要修改必须比较懂GRUB4DOS才行,我的是手动型(需要自己设定要备份的分区和放置备份文件的分区,自己修改GHOST参数),需要稍微懂一点GRUB4DOS就能修改,但无法实现智能,有点不方便使用,需要安装的人有点GRUB4DOS知识,来适应不同分区状况,不同系统安装状况的情况。这也是为什么把菜单独立出来的原因,全部设置在此菜单文件中修改。

[ 本帖最后由 mygamexxx 于 2011-9-24 22:56 编辑 ]
回复

使用道具 举报

21#
 楼主| 发表于 2011-9-25 05:30:29 | 只看该作者

回复 #20 mygamexxx 的帖子

放硬盘上没问题。但是没法量产到合盘工具中,或放到U盘。便携性不够。
回复

使用道具 举报

22#
发表于 2011-9-25 09:06:12 | 只看该作者
中文版 利用交换磁盘 或者 改变 lst文件 引导ima文件 出现error 42
英文版 使用正常 但是不同机器和光盘的环境 有的会出现:错误代码8:kernel must be loaded before booting 但不影响正常运行

[ 本帖最后由 ren001 于 2011-9-25 10:47 编辑 ]
回复

使用道具 举报

23#
发表于 2011-9-25 11:43:53 | 只看该作者
中文版测试时请使用最新版的GRLDR,适用于硬盘启动,U盘由于启动时有分为两种情况,一种U盘是(fd0)或(fd0,0),硬盘为(hd0),一种是U盘为(hd0),硬盘为(hd1),程序没有对U盘启动作判断和设置,所以不适用于U盘。

[ 本帖最后由 mygamexxx 于 2011-9-25 11:45 编辑 ]
回复

使用道具 举报

24#
发表于 2011-9-25 23:21:12 | 只看该作者
将文件解压至根目录(共三个文件),用GRLDR加载解压出来的onekey目录中的onekey.lst。备份文件将放置于硬盘第一逻辑分区的根目录(hd0,4)。
抄袭了C大的激活主分区和系统类型的检测代码,自动检测硬盘第一激活分区作为备份恢复对象。对U盘启动情况进行了判断,应该适用于U盘启动。



测试有问题,暂时不提供下载。

[ 本帖最后由 mygamexxx 于 2011-9-26 10:13 编辑 ]
回复

使用道具 举报

25#
发表于 2011-9-26 09:21:15 | 只看该作者
mygamexxx 你好 u盘启动为hd0 在引导ima文件不成功
回复

使用道具 举报

26#
发表于 2011-9-26 09:27:32 | 只看该作者
奇怪了,我昨天晚上测试U盘可以正常加载ima的啊,界面能出来吗?什么错误提示?

由于判断条件太多,可能会存在一定问题。

今天测试U盘识别为fd存在问题

[ 本帖最后由 mygamexxx 于 2011-9-26 09:35 编辑 ]
回复

使用道具 举报

27#
发表于 2011-9-26 11:46:54 | 只看该作者
你的代码似乎少个/
set root=%@root%
find --set-root %path%onekey.ima
%path%check.bat
我加上了两个/也提示文件没发现

[ 本帖最后由 ren001 于 2011-9-26 12:31 编辑 ]
回复

使用道具 举报

28#
发表于 2011-9-26 14:18:56 | 只看该作者
算了,U启难度太大,不搞了。在我的机器上,总是写入错误。在另一台机器上U启备份正常,恢复却不正常,怪事,参数都差不多啊。
onekey.lst内容:
debug 0
terminal console
default 0
timeout 0
title
set path=/onekey/
::    设定程序目录,最后的/不能少。
set t=50
::    设定延时,单位是秒
set p1=""
::    强行设定备份恢复对象,如1:1,要自动判断备份恢复对象此处设为p1=""。
set p2=/C_BAK.GHO
::    设定GRUB4DOS格式的备份文件位置及名称,如果放置于子目录,必须事先创建。
set p3=
::    设定OMNIFS格式的硬盘读写参数,如果无法备份或备份速度极慢,参数设定为p3=/noide再试。
set p4=(hd0,4)
::    设定备份文件放置的分区,可以是(hdx,y)形式或endpart,此处如设为p4="",映像文件放置于程序所在分区。
set BACKUP=-z1 -sure -rb
::    设定备份参数
set RESTORE=:1 -fx -sure -rb
::    设定恢复参数
find --set-root %path%onekey.ima
%path%check.bat

check.bat 内容:
!BAT
checkrange 0x0 read 0x8280 && goto :fd
checkrange 0x80 read 0x8280 && goto :hd
checkrange 0x23 read 0x8280 && goto :ud
goto :cd
:ud
calc *0x82b8>>8&0xff-0x80 && goto :fd
calc *0x82b8>>8&0xff-0x80 || goto :hd
:hd
find --set-root %path%onekey.ima
map --mem %path%onekey.ima (fd0)
map --hook
find --set-root makeactive --status
if exist ()/windows/system32/version.dll goto :ms
if exist ()/winnt/system32/version.dll goto :ms
#由于无法区分硬盘启动和USB-HDD启动,硬盘激活分区无WINDOWS系统的和USB-HDD相同处理
map (hd1) (hd0) && map (hd0) (hd1) && map --hook
find --set-root makeactive --status
if exist ()/windows/system32/version.dll goto :ms
if exist ()/winnt/system32/version.dll goto :ms
goto :noms
:fd
find --set-root %path%onekey.ima
map --mem %path%onekey.ima (fd1)
map --hook
map (fd0) (fd1)
map (fd1) (fd0)
map --hook
find --set-root makeactive --status
if exist ()/windows/system32/version.dll goto :ms
if exist ()/winnt/system32/version.dll goto :ms
:cd
find --set-root %path%onekey.ima
map --mem %path%onekey.ima (fd0)
map --hook
find --set-root makeactive --status
if exist ()/windows/system32/version.dll goto :ms
if exist ()/winnt/system32/version.dll goto :ms
goto :noms
#################################################
:ms
map --mem ()/windows/system32/version.dll (rd) || map --mem ()/winnt/system32/version.dll (rd)
calc *0x82d0=*0x82d0+*0x82d8-0x800
calc *0x82d8=0x800
cat --locate=\0\0\x44\0\0\0 --number=1 (rd)+1 | set skip=
set /a skip=0x%skip%-0x30
cat --locate=\0\0\0 --skip=%skip% --number=1 (rd)+1 | set skip=
calc *0x82d0=*0x82d0+0x%skip%+3
call Fn.67 *0x82d0 0x60000 3
cat (md)0x300+1,1 | set nt_ver=NT
cat (md)0x300+1,3 | goto :_
:noms
set sys_ver=Unknown System
goto :disp
exit
:_5.0
set sys_ver=Windows 2000
goto :disp
exit
:_5.1
set sys_ver=Windows XP
goto :disp
exit
:_5.2
set sys_ver=Windows 2003
goto :disp
exit
:_6.1
set sys_ver=Windows 7/2008
goto :disp
exit
:_6.2
set sys_ver=Windows 8
goto :disp
exit
:disp
set sys_hd=%@root%
clear
##############################################
(fd0)/grub/set.bat

set.bat内容:
!BAT
insmod %~dp0diskid
insmod %~dp0unifont
insmod %~dp0vfont
terminal console
diskid
cat --skip=0x4ff00 (md)+0x300 | set p5=
if %p1%==""  set p1=%p5%
::    自动设定备份恢复对象
set ps=cmd="echo %1" filpre="" ext=.gho dirext=1 subdir=2 devs="--devices=h" return="reboot" p1=%p1%
::    设定搜索批处理运行参数
if %p4%=="" find --set-root %path%onekey.ima
if not %p4%=="" root %p4%
set pg=%@root%
diskid
cat --skip=0x4ff00 (md)+0x300 | set diskid=
echo %diskid% > (md)0x200+1
cat --locate=\: --replace=\. (md)0x200+1
cat (md)0x200+1 | set diskid=
ls %p2% && cat --length=0 %p2% ||  set gho=1
ls %p2% && cat --length=0 %p2% &&  set gho=2
ls %p2% || set gho=0
::    判断备份文件是否为0字节(备份过程断电或强行中断造成),0为无备份文件, 1为存在0字节备份文件, 2为存在正常的备份文件。
clear
%~dp0show.bat

show.bat 内容:
!BAT
vfont %~dp0show.exe
echo
diskid
cat --skip=0x4ff00 (md)+0x300 | set diskid=
if %diskid%==%p1% && echo -P:1208 $[1104]Error: $[0106]Program can not be placed in the partition to be backed up.  && pause --wait=%t%
if %diskid%==%p1% && goto Default
echo -P:1115 $[0102]系统位置: $[0106]%p5%  %sys_hd%  $[0102]系统类型: $[0106]%sys_ver%
echo -P:1215 $[0102]备份恢复: $[0106]%p1%           $[0102]GHO 位置: $[0106]%pg%%%p2%
if %gho%==1 echo -P:1422 $[0105]备份文件错误 $[0106]!!!$[0105] $[0105] 按 $[1106]Alt+B$[0105] 重新备份系统
if %gho%==0 echo -P:1424 $[0105]系统备份不存在$[0106]!!!$[0105] 按 $[1106]Alt+B$[0105] 备份系统
if %gho%==2 echo -P:1432 $[0105]恢复系统按 $[1106]F10
echo -P:2225 $[0102]系统备份 恢复 维护    $[0103]%@DATE%
echo -P:04-28 $[0101]Alt+B   $[0107]备份系统
echo -P:05-28 $[0102]Alt+0   $[0107]0PE 维护
echo -P:06-28 $[0103]Alt+D   $[0107]启动 DOS
echo -P:07-28 $[0104]Alt+C   $[0107]G4D命令行
echo -P:08-28 $[0105]Alt+S   $[0107]搜索.GHO
%~dp0do.bat

do.bat内容:
!BAT
!BAT
echo %diskid% > (md)0x200+1
cat --locate=\: --replace=\. (md)0x200+1
cat (md)0x200+1 | set diskid=
set key=
pause --test-key --wait=%t%
set /A key=*0x4CB00
vfont
if %key%==0x4400 goto 0x4400
if %key%==0x3000 goto 0x3000
if %key%==0x8100 goto 0x8100
if %key%==0x2000 goto 0x2000
if %key%==0x2E00 goto 0x2E00
if %key%==0x1F00 goto 0x1F00
:Default
#引导硬盘默认系统
clear
find --set-root makeactive --status
chainloader +1
exit
:0x4400    F10
#恢复系统
clear
if not exist %p2% reboot
#如果系统备份不存在,重新启动
write --offset=16 (fd0)/autoexec.bat %p1%\r\n
write --offset=31 (fd0)/autoexec.bat %diskid%\r\n
write --offset=46 (fd0)/autoexec.bat pload
write --offset=59 (fd0)/autoexec.bat %p3%\r\n
write --offset=167 (fd0)/autoexec.bat %p3%\r\n
write --offset=275 (fd0)/autoexec.bat %p2%\r\n
write --offset=383 (fd0)/autoexec.bat %RESTORE%\r\n
cat --skip=275 --locate=\/ --replace=\\  (fd0)/autoexec.bat
cat --skip=167 --locate=\/ --replace=\-  (fd0)/autoexec.bat
chainloader (fd0)/io.sys
exit
:0x3000    Alt+B
#备份系统
clear
if %gho%==2 password --md5 $1$om70$FkKbNfOBf72FrRSqrj34E1
#系统备份已存在时,要求输入密码,当前密码为:123456
write --offset=16 (fd0)/autoexec.bat %p1%\r\n
write --offset=31 (fd0)/autoexec.bat %diskid%\r\n
write --offset=46 (fd0)/autoexec.bat pdump
write --offset=59 (fd0)/autoexec.bat %p3%\r\n
write --offset=167 (fd0)/autoexec.bat %p3%\r\n
write --offset=275 (fd0)/autoexec.bat %p2%\r\n
write --offset=383 (fd0)/autoexec.bat %BACKUP%\r\n
cat --skip=275 --locate=\/ --replace=\\  (fd0)/autoexec.bat
cat --skip=167 --locate=\/ --replace=\-  (fd0)/autoexec.bat
chainloader (fd0)/io.sys
exit
:0x8100    Alt+0
#引导0PE进行系统维护
clear
find --set-root /0pe/0pe.iso
map /0pe/0pe.iso (0xFF) || map --mem /0pe/0pe.iso (0xFF)
map --hook
chainloader (0xFF)
exit
:0x2000    Alt+D
#进入DOS
clear
write --offset=46 (fd0)/autoexec.bat todos
chainloader (fd0)/io.sys
exit
:0x2E00    Alt+C
#进入GRUB4DOS命令行
clear
commandline
exit
:0x1F00    Alt+S
#显示分区信息和搜索硬盘上的GHO文件
clear
write --offset=16 (fd0)/autoexec.bat %p1%\r\n
write --offset=46 (fd0)/autoexec.bat pload
write --offset=59 (fd0)/autoexec.bat %p3%\r\n
write --offset=167 (fd0)/autoexec.bat %p3%\r\n
write --offset=383 (fd0)/autoexec.bat %RESTORE%\r\n
%~dp0searth.bat %ps%
exit

[ 本帖最后由 mygamexxx 于 2011-9-27 16:18 编辑 ]
回复

使用道具 举报

29#
发表于 2011-9-26 23:24:54 | 只看该作者
USB-HDD 测试备份、恢复、GHO搜索、进入DOS、进入命令行、引导硬盘系统测试成功,原来是 map 少了--mem 参数,乱中出错。明天继续测试USB-ZIP!!!
searth.bat内容:
!BAT
setlocal
debug off
checkrange 20110809:-1 read 0x8278 || echo Please use grub4dos-0.4.5b-2011-08-09 or above! && exit 1
if "%1"=="" goto :参数检测
set *
:获取参数
if /i "%1"=="" && goto :参数检测
set m.%~1=%~2
shift 1
shift 1
goto :获取参数
:help
echo Usage: %0 cmd="cmd for each file" OPTIONS..
echo OPTIONS:
echo -e \t title="the main menu title"
echo -e \t menu="pre_set menu file"
echo -e \t subdir=n
echo -e \t devs="find parameters"
echo -e \t return="return cmd"
echo -e \t init="init cmd"
echo -e \t root="root dir. e.g. ()/boot/"
echo -e \n\t for more please visit http://chenall.net
exit
:菜单居中
set title=\======================
set title=%title:~0,%1%%
exit
:参数检测
if not exist m.cmd && goto :help
if not exist m.title && set m.title=搜索到的%m.ext%文件
if not exist m.menu && set m.menu=(md)0x210+16 && echo -e default 1\ndebug off > (md)0x210+16
if not exist m.subdir && set m.subdir=1
if not exist m.devs && set m.devs=--set-root
if not exist m.root && set m.root=()
echo -e !BAT\necho %m.cmd% \>\> %m.menu% > (md)0x260+4
:::::::::::::::::::::::
::获取前辍字符数量
set title=%m.filpre%
if exist title set m.prelen=%@retval% || set m.prelen=0
::获取标题字符数量用于标题居中
set title=%m.title%
set /a title=68-*0x4CB00>>1
call :菜单居中 %title%
::自动生成菜单
set ?_n=1
set m.info=File list menu for grub4dos by chenall.\n\t\t for more information please visit http://chenall.net
if exist m.init && echo %m.init% >> %m.menu%
echo unifont %~dp0U16.BIN >> %m.menu%
echo title ======================== 硬盘分区信息 ======================== >> %m.menu%
echo pause %m.info% >> %m.menu%
call :查看分区
echo title %title% %m.title% %title%\n\n\t%m.info% >> %m.menu%
echo pause %m.info% >> %m.menu%
echo -e $[0106] %m.info%
echo $[0102] Please wait ...
echo $[1105] Working......
root %m.root%
if exist m.debug echo %@time%
find %m.devs% call :生成文件列表 || echo Unknow Error.
if exist m.debug pause %@time%
echo title ========================== http://chenall.net == 2011-08-22 ==\n\n\t%m.info% >> %m.menu%
echo pause %m.info% >> %m.menu%
set ?_n=
if not exist m.return && configfile %m.menu%
echo title   0. 重启 \n\n\t 重新启动 %m.return% >>  %m.menu%
echo unifont --unload >> %m.menu%
echo %m.return%  >> %m.menu%
echo boot >> %m.menu%
call :替换英文
configfile %m.menu%
exit
:文件过滤
if "%~1"=="" exit
set tmp=%1
shift
if "%tmp:~-2,1%"=="~" && goto :文件过滤
if "%tmp:~0,1%"=="$" && goto :文件过滤
call :检测文件 %0 %m.prelen%
goto :文件过滤
:获取文件大小
calc *0x8290>>30 && set size=30GB && exit
calc *0x8290>>20 && set size=20MB && exit
calc *0x8290>>10 && set size=10KB && exit
set size=00B
exit
:检测文件
if exist m.debug1 && echo %~f1
::检测前辍
if /i "%m.filpre%"=="%tmp:~0,%2%" || goto :检测目录
::检测后辍
if exist m.ext || goto :添加菜单
set f.type=%~x1
if not exist f.type set f.type=.
call :过滤 %m.ext% && goto :添加菜单
:检测目录
if %m.subdir%==0 && exit
if exist m.dirext || if "%~x1"=="" || exit
cat --length=0 /%1 && exit
if exist m.debug2 && echo $[0101] %~f1
goto :生成文件列表
:过滤
if "%1"=="" && exit 1
shift
if /i "%0"=="%f.type%" || goto :过滤
exit
:添加菜单
cat --length=0 /%1 || goto :检测目录
call :获取文件大小
if exist m.debug3 && echo $[0102] %~f1
calc *0x8290=*0x8290>>%size:~0,2%
set size=%@retval% %size:~2%
set m=1    %?_n%
diskid %~d1
cat --skip=0x4ff00 (md)+0x300 | set id=
if %id%==%m.p1% echo title %m:~-3%. %~f1 位于要恢复的分区,不能用于恢复。 \n\n\t 文件大小 %size% 文件位置 %~f1 >> %m.menu%
if not %id%==%m.p1% echo title %m:~-3%. %~f1 \n\n\t 文件大小 %size% 文件位置 %~f1  \n\t 按回车键使用此 GHO 文件恢复系统 >> %m.menu%
if %id%==%m.p1% goto :error1
echo write --offset=31 (fd0)/autoexec.bat %id%\r\n >> %m.menu%
echo write --offset=275 (fd0)/autoexec.bat %~pnx1\r\n >> %m.menu%
echo cat --skip=275 --locate=\/ --replace=\\  (fd0)/autoexec.bat >> %m.menu%
echo cat --skip=167 --locate=\/ --replace=\-  (fd0)/autoexec.bat >> %m.menu%
echo set key= >> %m.menu%
echo echo 注意:将使用%~f1文件恢复系统,文件大小约 %size%。 >> %m.menu%
echo echo 可能导致系统无法启动或数据丢失。 请谨慎使用!!! >> %m.menu%
echo echo 请核对恢复的目标分区 %m.p1% 是否正确。 >> %m.menu%
echo echo   >> %m.menu%
echo pause --test-key 按"Y"键确认恢复,按"N"键返回。 >> %m.menu%
echo set /A key=*0x4CB00 >> %m.menu%
set ppp=key
echo unifont --unload >> %m.menu%
echo if %%%ppp%%%==0x1579  chainloader (fd0)/io.sys >> %m.menu%
echo if not %%%ppp%%%==0x1579 configfile %m.menu%  >> %m.menu%
goto :right1
:error1
echo echo %~f1 文件存在于要恢复的分区,无法恢复。 >> %m.menu%
echo pause 按任意键返回 >> %m.menu%
echo unifont --unload >> %m.menu%
echo configfile %m.menu%  >> %m.menu%
:right1
(md)0x260+4 %~f1
echo boot >> %m.menu%
set /a ?_n=%?_n%+1
exit
:生成文件列表
setlocal
if "%~1"=="" || root %~f1
set /a m.subdir=%m.subdir%-1
ls | call :文件过滤= || echo
endlocal
exit
:查看分区
set n=1
set skip=0
find --devices=h root > (md)0x20A+6
call :分区信息
exit
:分区信息
cat --locate=\xa --number=1 --skip=%skip% (md)0x20A+6 || exit
set /a length=%?%-%skip%
cat --skip=%skip% --length=%length% (md)0x20A+6 | call :add_list=
set /a skip=%length%+%skip%+1
goto :分区信息
:add_list
set m=1   %n%
set a=%*
echo %a:~,7% | set c=
diskid %c%
cat --skip=0x4ff00 (md)+0x300 | set id=
echo title  %m:~-2%. %* %id% \n\n\t %c% 的 ghost 磁盘分区符表达为 %id%, \n\t 按回车键查看此分区根目录内容。 >> %m.menu%
echo ls %c%/  >> %m.menu%
echo pause  >> %m.menu%
echo unifont --unload >> %m.menu%
echo configfile %m.menu%  >> %m.menu%
set /a n=%n%+1
clear
exit
:替换英文
cat --locate="partition type" --replace="分区类型--" (md)0x210+16
cat --locate="Filesystem" --replace=" 文件系统为" (md)0x210+16
cat --locate="is" --replace="--" (md)0x210+16
configfile %m.menu%
exit

[ 本帖最后由 mygamexxx 于 2011-9-26 23:54 编辑 ]
回复

使用道具 举报

30#
发表于 2011-9-27 09:37:46 | 只看该作者
usb-zip测试成功,硬盘测试成功,光盘没办法测试,界面如下:


提示:grldr必须是2011.9.13以后版本!!!

[ 本帖最后由 mygamexxx 于 2011-9-28 10:06 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-11 23:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表