无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: mygamexxx

我的一键恢复

[复制链接]
发表于 2011-9-29 17:22:56 | 显示全部楼层 |阅读模式
我的一键恢复,适用于硬盘启动一键恢复,U盘启动对硬盘进行一键恢复,光盘启动对硬盘进行一键恢复(GHO文件在硬盘上)。
硬盘系统检测代码和GHO文件搜索代码来自chenall的作品,多硬盘轮换map代码来自zhaohj的帖子,在此致谢。

建议: GHO文件保存于硬盘上,保存于U盘有太多U盘识别的问题。

2011年12月1日更新,采用最新grldr,中文提示,备份文件位置放置于硬盘(U盘有死机可能,USB的DOS驱动提示选择加载)。参数设置: 用文本编辑器打开CHECK.BAT,根据注释修改参数,内容见4楼。

界面如下:
221.jpg

USB的DOS驱动加载选择
12.jpg


界面说明:
系统位置表示检测到的硬盘激活主分区的位置(两种表达方式,前面是GHOST格式,后面是GRUB4DOS格式),系统类型是检测到的硬盘激活主分区的系统类型。
备份恢复表示强行设定的或自动检测的备份恢复的对象分区, GHO位置表示设定的或自动确定的备份文件的位置和名称。
主要是方便核对设置或自动检测结果是否与使用者的意图是否一致。

启动时如果要直接进入硬盘系统,可以按界面上的热键外的其他按键,建议按空格键,跳过延时直接进系统。延时过后,无按键动作直接进系统。

硬盘安装:
将程序压缩包解压到非系统分区根目录,运行BOOT\SETUP目录下的“畸形目录安装.cmd”,将程序安装为畸形目录形式\BOOT.\GRUB,运行“常规目录安装.cmd”将程序安装为常规目录形式\BOOT\GRUB。如果要修改备份恢复参数,准备安装为常规目录请修改menu.txt,准备安装为畸形目录请修改menu1.txt,程序目录最好不要修改,如果要修改必须同时修改WEE菜单文件,分别为常规目录weemenu.txt和畸形目录weemenu1.txt。


也可直接解压,后用grldr执行CHECK.BAT文件。


U盘使用:

将程序压缩包解压到U盘根目录,更改\BOOT\GRUB\grldr内置菜单文件,p4= 硬盘备份文件所在分区,形式(hdx,y),更改p2=硬盘上的备份文件目录和名称(GRUB4DOS格式)。然后U盘启动时引导grldr文件。

光盘使用:
将程序压缩包解压到并放置于光盘根目录,更改\BOOT\GRUB\grldr内置菜单文件,p4= 硬盘备份文件所在分区,形式(hdx,y),更改p2=硬盘上的备份文件目录和名称(GRUB4DOS格式)。然后光盘启动时引导grldr文件。如果P4不修改(hdx,y),备份文件在硬盘最后逻辑分区(如果硬盘无逻辑分区,在硬盘最后主分区)。注意:光盘启动对文件名大小敏感。


备份文件已存在,重新备份时需要密码(当前密码为123456)
程序硬盘安装时会修改硬盘MBR,请谨慎使用,后果自负

如果硬盘是ACHI模式,可能需要修改p3=/noide,才能正常备份和恢复。

下载地址:
http://115.com/file/be8arxcw#
我的一键恢复20111201.rar

2011年12月5日,更新一下CHECK.BAT,增加对硬盘启动为FBINST制作的启动类型的判断。解压后覆盖20111201版的CHECK.BAT。修正备份恢复对象格式的错误,USB-HDD盘启动时自动判断(以UUID为0000-0000的单分区磁盘作为判断条件,可能存在问题)
CHECK.rar (3.33 KB, 下载次数: 100)
发表于 2011-9-29 18:15:00 | 显示全部楼层
很不错,楼主继续努力
回复

使用道具 举报

发表于 2011-9-29 19:28:03 | 显示全部楼层
支持!希望更多牛人研究~多些玩linux引导的。。。如移植ATI的。。。
回复

使用道具 举报

 楼主| 发表于 2011-9-30 08:10:46 | 显示全部楼层
CHECK.BAT内容:
!BAT
debug 0
::参数设置
set path=%~p0
set t=50
::设定延时,单位是秒
set p1=x:y
::强行设定备份恢复对象,GHOST格式(示例:1:1为第一硬盘第一分区),此处不修改自动判断备份恢复对象。
set p2=/C_BAK.GHO
::设定GRUB4DOS格式的备份文件位置及名称,如果放置于子目录,必须事先创建。
set p3=
::设定OMNIFS格式的硬盘读写参数,如果无法备份或备份速度极慢,参数设定为p3=/noide再试。
set p4=(hdx,y)
::设定备份文件放置的分区,示例:(hd0,4)为第一硬盘第一逻辑分区,此处不修改,放置于第一硬盘最后逻辑分区(硬盘无逻辑分区为最后主分区)。
set BACKUP=-z1 -sure -rb
::设定备份参数
set RESTORE=:1 -fx -sure -rb
::设定恢复参数
:::::::::::::::::::::::::::::::::::::::::::::::
font %~dp0unifont.hex
graphicsmode -1 640
::菜单背景图
::splashimage %~dp0TEST.BMP
insmod %~dp0diskid
if %p4%==(hdx,y) set p4=endpart
set cdd=""
checkrange 20111129:-1 read 0x8278 || echo -P:1212 $[0106]请使用 grub4dos-0.4.5b-2011-11-29 或更新版本! && echo -P:1418 $[0105]按任意键重启。 && pause && reboot
::检测启动介质类型
root (ud) && goto :ud
checkrange 0x0 read 0x8280 && map (fd0) (fd1) && map --hook && goto :checkos
checkrange 0x80 read 0x8280 && goto :hdcheck
goto :cd
::所有其他启动盘、光盘启动、pxe启动作为光盘启动处理
::echo -P:1218 $[0105]未知的启动盘类型! && echo -P:1418 $[0105]按任意键重启。 && pause && reboot
exit
:ud
calc *0x82b8>>8&0xff-0x80 || goto :hdcheck
calc *0x82b8>>8&0xff-0x80 && map (fd0)+1 (hd) && map --hook && goto :checkos
exit
:cd
set cdd=off
goto :checkos
exit
:hdcheck
root (hd0,1) && goto :checkos
root (hd0,4) && goto :checkos
uuid (hd0,0)
if %?_UUID%==0000-0000 goto :usbhdd
goto :checkos
exit
::硬盘次序轮换,将U盘置于最后
:usbhdd
clear
set /a hd=*0x475&0xff+0x7e
if %hd%==127 echo -P:1218 $[0105]除U盘启动盘外无其他硬盘, 按任意键重启! && pause && reboot
:move
set /a hd1=%hd%+1
map (%hd1%) (%hd%)
set /a hd=%hd%-1
if not %hd%==127 goto :move
set /a hd=%hd%+1
map (%hd%) (hd-1)
map --hook
goto :checkos
exit
:checkos
rootnoverify (hd0,0)
find --set-root makeactive --status
if exist ()/windows/system32/version.dll goto :ms
if exist ()/winnt/system32/version.dll goto :ms
goto :noms
exit
::检测硬盘激活分区系统类型
: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=未知系统
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
diskid
cat --skip=0x4ff00 (md)+0x300 | set p5=
if %p1%==x:y set p1=%p5%
::自动设定备份恢复对象
set ps=cmd="echo %1" filpre="" ext=.gho dirext=1 subdir=2 devs="--devices=h" return="reboot" p1=%p1%
::设定搜索批处理运行参数
rootnoverify (hd0,0)
root %p4% || echo -P:1212 $[0106]目标磁盘不存在, 请更改参数 P4! && echo -P:1418 $[0105]按任意键重启。 && pause && reboot
diskid
cat --skip=0x4ff00 (md)+0x300 | set diskid=
if %diskid%==%p1% && echo -P:1212 $[0104]错误: $[0106]备份文件不能放置于要备份或恢复的分区,请修改P4参数。 && echo -P:1418 $[0105] 按任意键重启。 && pause && reboot
set pg=%@root%
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为存在正常的备份文件。
diskid
echo %?% | set diskid=
clear
echo
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] 按 $[0106]Alt+B$[0105] 重新备份系统
if %gho%==0 echo -P:1424 $[0105]系统备份不存在$[0106]!!!$[0105] 按 $[0106]Alt+B$[0105] 备份系统
if %gho%==2 echo -P:1432 $[0105]恢复系统按 $[0106]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
root %sys_hd%
set key=
pause --test-key --wait=%t%
set /A key=*0x4CB00
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
root (hd0,0)
find --set-root makeactive --status
chainloader +1
exit
:0x4400    F10
::恢复系统
call :加载DOS映像
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 --length=102 --locate=\/ --replace=\\ (fd0)/autoexec.bat
cat --skip=167 --length=102 --locate=\/ --replace=\- (fd0)/autoexec.bat
chainloader (fd0)/io.sys
exit
:0x3000    Alt+B
::备份系统
call :加载DOS映像
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 --length=102 --locate=\/ --replace=\\ (fd0)/autoexec.bat
cat --skip=167 --length=102 --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
call :加载DOS映像
clear
write --offset=46 (fd0)/autoexec.bat todos
chainloader (fd0)/io.sys
exit
:0x2E00    Alt+C
::进入GRUB4DOS命令行
clear
commandline
exit
:0x1F00    Alt+S
call :加载DOS映像
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
find --set-root %path%SEARTH.BAT
%path%SEARTH.BAT %ps%
exit
:加载DOS映像
find --set-root %path%ONEKEY.IMA
map --mem %path%ONEKEY.IMA (fd0)
map --hook
::检查是否需要加载光驱的DOS驱动
if %cdd%==off cat --skip=156 --length=30 --locate="devic" --replace="rem c" (fd0)/config.sys
if %cdd%==off cat --skip=501 --length=25 --locate="LH sh" --replace="rem s" (fd0)/autoexec.bat
clear
echo  -P:1212 $[0105]5秒内选择是否加载USB的DOS驱动, 警告:加载驱动可能引起死机!
echo  -P:1412 $[0105]按"空格"键加载USB的DOS驱动,其他键或无选择不加载驱动。
set key=
pause --test-key --wait=5
set /A key=*0x4CB00
if not %key%==0x3920 goto :nousb
::加载DOS的U盘驱动
cat --skip=94 --length=60 --locate="rem c" --replace="devic" (fd0)/config.sys
:nousb
exit

[ 本帖最后由 mygamexxx 于 2011-12-6 11:09 编辑 ]
回复

使用道具 举报

发表于 2011-9-30 09:29:44 | 显示全部楼层
恭喜楼主 同时测试双硬盘也很正常
回复

使用道具 举报

 楼主| 发表于 2011-9-30 09:34:44 | 显示全部楼层
autoexec.bat内容:
echo off
set d=:::::::
set p=:::::::
set m=todos
set i=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set f=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set g=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set n=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
LH ctmouse.exe
LH shsucdx.com /D:MSCD001
if %m%==pdump goto :BACKUP
if %m%==pload goto :RESTORE
if %m%==todos goto :END
:BACKUP
Omnifs.exe delete %p%:%g% %i%
Ghost.exe -clone,mode=pdump,src=%d%,dst=%p%:%g% %n% %f%
if exist A:\GHOSTERR.TXT goto :del
goto :END
:del
Omnifs.exe delete %p%:%g% %i%
func.exe -r
goto :END
:RESTORE
Ghost.exe -clone,mode=pload,dst=%d%,src=%p%:%g%%n% %f%
goto :END
:END

config.sys内容:
device=himem.sys /testmem:off
dos=high,umb
files=10
buffers=10
stacks=9,256
lastdrive=z
rem cehigh=USBASPI.SYS /v /e /norst
rem cehigh=ASPIDISK.SYS
devicehigh=uide.SYS /D:MSCD001

[ 本帖最后由 mygamexxx 于 2011-12-6 11:12 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2011-9-30 13:03:22 | 显示全部楼层
修正:增加p4参数的合法性和正确性检查;修正光盘启动的一个代码手误,可能导致光盘启动失败。
请下载下面的压缩包,解压替换上面下载的\boot\grub\check.bat的同名文件

10月2日更新已修正。

[ 本帖最后由 mygamexxx 于 2011-10-2 22:03 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2011-10-1 15:17:12 | 显示全部楼层
怎么没人反馈问题,难道是使用中都没问题?那就太好了,出乎我的意料啊。如果是太烂的原因,那真是杯具了。。。。

[ 本帖最后由 mygamexxx 于 2011-10-1 15:27 编辑 ]
回复

使用道具 举报

发表于 2011-10-1 16:51:46 | 显示全部楼层
谢谢分享!!!!
下来试一下
回复

使用道具 举报

发表于 2011-10-2 07:27:34 | 显示全部楼层
很不错,楼主继续努力
回复

使用道具 举报

发表于 2011-10-2 08:23:34 | 显示全部楼层
支持一下楼主,继续努力
回复

使用道具 举报

发表于 2011-10-2 22:11:20 | 显示全部楼层
没见到有下载地址、、、、
回复

使用道具 举报

 楼主| 发表于 2011-10-2 22:16:01 | 显示全部楼层
2011年10月2日更新:非光盘启动时,DOS下加载光驱驱动;修正一处导致usb-hdd启动时p4=""设置下导致出错的语句。以前已下载的朋友请更新(重新下载)。

[ 本帖最后由 mygamexxx 于 2011-10-2 22:17 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2011-10-24 13:49:13 | 显示全部楼层
2011年10月24日更新: 更新diskid,修正光盘启动由于文件名大小写问题造成的无法正常启动,修正p4参数检测代码造成的运行错误,U盘启动参数增加DOS下USB驱动加载与否的设置(一些主板能在DOS下识别U盘,加载DOS的USB驱动会造成死机)
回复

使用道具 举报

发表于 2011-10-24 15:08:38 | 显示全部楼层
不错哦 可以试下~~~~~~
回复

使用道具 举报

发表于 2011-10-25 10:52:03 | 显示全部楼层
比较高深,纯支持了
回复

使用道具 举报

 楼主| 发表于 2011-12-1 15:28:54 | 显示全部楼层
2011年12月1日更新,采用最新grldr,中文提示,备份文件位置放置于硬盘(U盘有死机可能,USB的DOS驱动提示选择加载)。
回复

使用道具 举报

发表于 2011-12-6 14:27:48 | 显示全部楼层
支持原创!!!!!!!
回复

使用道具 举报

发表于 2011-12-7 11:03:52 | 显示全部楼层
很不错!VERY GOOD!

只可惜那些批处理没能全部看懂,等看明白了才能DIY了。
回复

使用道具 举报

发表于 2011-12-31 17:46:45 | 显示全部楼层
这个作品不错,技术很多,修改合并收藏了,谢谢!!
回复

使用道具 举报

发表于 2012-1-8 15:49:15 | 显示全部楼层
下来试一下~~~~~~~~~
回复

使用道具 举报

发表于 2020-1-2 15:02:37 | 显示全部楼层
回复

使用道具 举报

发表于 2020-1-3 22:07:29 来自手机 | 显示全部楼层
不错,很不错
回复

使用道具 举报

发表于 2020-3-3 21:09:45 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 15:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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