无忧启动论坛
标题:
新手试写:简单的备份还原,请指教(下载地址已补上)
[打印本页]
作者:
lhc0688
时间:
2012-3-3 21:03
标题:
新手试写:简单的备份还原,请指教(下载地址已补上)
本人为真实菜鸟,折腾了一个多礼拜,终于初步完成了这个简单的备份、还原小程序。不需要安装,直接拷贝到C盘根目录下即可(要能进入纯DOS),然后运行menu.bat,或autoexec.bat里面调用即可。
程序代码基本都是本站帖子里面借鉴来的,同时也得到了几位高手的指点和帮助,重点感谢dos时代菜鸟和pznpt两位高手,帮我解决了两个最头疼的难题,特别是时代菜鸟老大的获取备份目标盘分区的代码,是我这个程序的核心,在此感谢!
发一下menu.bat的代码,忘各位高手指正:
@echo off
cls
tw /q >nul
tw /np >nul
::---------------------------------------------------
set BF_DIR=SYSBACK
set BF_NAME=OS_WINXP.GHO
echo.
wbat text 3,6 (+green on black)"正在分析硬盘分区数据,请等待...... !!!"
echo.
::---------------------获取备份的目标盘分区(即:第一个非激活、非隐藏分区),赋值给 BF_PAR ---------------------------------------------
omnifs info |awk '$0!~"Active" && $0!~"Hidden" && $0~"Volume"'|awk '{print $1;exit}'|nset BF_PAR=$1
::-------------以下部分为自动获取系统所在分区数据,SYS_HD 为系统硬盘,SYS_PAR 为系统分区号,SYSP 为合并后的系统分区编号(1:1)-----------------
::--omnifs info >hd_id.txt
::--awk -f sysdrv.awk hd_id.txt|nset/p1,1 SYS_HD=$1
::--awk -f sysdrv.awk hd_id.txt|nset/p3,1 SYS_PAR=$1
::--awk -f sysdrv.awk hd_id.txt|nset SYSP=$1
::--------------------- set SYSP=1:1 只为显示使用,在本程序中没用
::-------------本程序中直接确定系统分区为1:1,所以不调用,直接赋值 SYS_HD=1、SYS_PAR=1。
set SYS_HD=1
set SYS_PAR=1
omnifs dir %BF_PAR%\%BF_DIR%\ >hd_gho.txt
awk '/%BF_NAME%/ {print $4}' hd_gho.txt|nset OMN_NAME=$1
awk '/%BF_NAME%/ {print $1}' hd_gho.txt|nset OMN_TIME=$1
::------ 以下为转换日期显示格式 --------------------------------------------------------
strings len=length %OMN_TIME%
if "%len%"=="7" set OMN_TIME=0%OMN_TIME%
strings yyyy=right %OMN_TIME%,2
set yyyy=20%yyyy%
strings mm=mid %OMN_TIME%,4,2
strings dd=left %OMN_TIME%,2
set OMN_TIME=%yyyy%年%mm%月%dd%日
::--------------------- 如果目标分区中找不到文件,文件名和日期变量会是空,后面判断时候就会出问题,因为不知道该怎么写,所以干脆在这里随便赋个值。
if "%OMN_NAME%"=="" set OMN_NAME=kong
:_sys_main
cls
call w.bat box @wbat.txt:main1
if "%?%"=="100" goto _dos
if "%?%"=="1" goto _restore
if "%?%"=="2" goto _backup
if "%?%"=="3" goto _dos
if "%?%"=="4" goto _end
:_backup
if %BF_NAME%==%OMN_NAME% goto _bk_if
cls
wbat box "系统首次备份,文件路径:%BF_PAR%\%BF_DIR%\%BF_NAME%!!",确认执行,取消备份 #1
if errorlevel 100 goto _sys_main
if errorlevel 2 goto _sys_main
if errorlevel 1 goto _bf_start
:_bf_start
cls
wbat text 3,6 (+green on black)"正在创建备份目录和文件属性处理中,请等待......!!!"
omnifs mkdir %BF_PAR%\%BF_DIR% >nul
::---感觉没必要设置隐藏,备份文件能看到更方便用户使用,隐藏有时候会误解。
::-- omnifs attrib +s +r +h %BF_PAR%\%BF_DIR% >nul
::-------------------------------------------------------------------------------------------------
cls
tw /q >nul
ghost -clone,mode=pdump,src=%SYS_HD%:%SYS_PAR%,dst=%BF_PAR%\%BF_DIR%\%BF_NAME% -z5 -sure -rb
:_bk_if
cls
wbat text 3,6 (+green on black)"--- 提示:备份文件保存路径为:%BF_PAR%\%BF_DIR%\%BF_NAME%,如有疑问请先检查 --- "
wbat box "备份文件已存在(日期:%OMN_TIME%),继续操作将覆盖原备份文件!!",确认执行,取消备份 #1
if errorlevel 100 goto _sys_main
if errorlevel 2 goto _sys_main
if errorlevel 1 goto _bf_start
:_restore
if not %BF_NAME%==%OMN_NAME% goto _re_if
cls
wbat text 3,6 (+green on black)"--- 注意:还原过程中切记不可断电、关机、强行终止,以免造成整个硬盘数据丢失!! --- "
wbat box "确定用(日期:%OMN_TIME%)的备份还原系统吗!!",确认执行,取消还原 #1
if errorlevel 100 goto _sys_main
if errorlevel 2 goto _sys_main
if errorlevel 1 goto _re_start
:_re_start
cls
tw /q >nul
ghost -clone,mode=pload,src=%BF_PAR%\%BF_DIR%\%BF_NAME%:1,dst=%SYS_HD%:%SYS_PAR% -sure -rb
:_re_if
cls
wbat box "系统备份文件不存在,请检查(文件路径:%BF_PAR%\%BF_DIR%\%BF_NAME%)!",取消返回 #1
if errorlevel 100 goto _sys_main
if errorlevel 1 goto _sys_main
:_end
rest
:_dos
cls
echo ----- 进入MS-DOS v7.1,操作提示: -----
echo.
echo NTDOS 加载 NTFS分区驱动;REST 重启系统;
echo TW/Q 退出中文系统;MENU 重新运行备份还原菜单
echo.
--------------------------------------------- 分割线 -----------------------------------------------
补上程序包115网盘地址:
http://115.com/file/anexdg9w
[
本帖最后由 lhc0688 于 2012-3-5 07:47 编辑
]
作者:
lhc0688
时间:
2012-3-3 21:23
忘了说明:本程序是以 O.Y.M.2010 大大的 《omnifs +ghost 简单实用的一键》为蓝本改写的,谢谢oym老大的好贴,希望不要在意。
作者:
lhc0688
时间:
2012-3-3 21:24
附件发不上去,没办法。
[
本帖最后由 lhc0688 于 2012-3-4 08:09 编辑
]
作者:
23070205
时间:
2012-3-4 20:02
楼主还是发到115网盘吧,期待
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3