大家知道,WINDOWS操作系统对注册表的保护有一个非常实用的功能,就是系统在用户当天第一次开机时会自动将WINDOWS目录下的
SYSTEM.DAT SYSTEM.INI USER.DAT WIN.INI
这四个注册表文件打成CAB包存放在WINDOWSSYSBCKUP目录下,由于系统默认保存最近5个开机日备份的注册表文件包,所以它们分别以rb000.cab~rb004.cab命名存放。
对于这个CAB文件包,我们可以在DOS状态下用WINDOWSCOMMAND目录下的EXTRACT.EXE来解压,也可以在DOS状态下进入windows目录用命令:
scanreg.exe/restore
来恢复注册表。相信WINDOWS提供的这个功能一定帮助了不少的注册表狂热分子来对付注册表崩溃吧?但每次恢复都要记住这些命令,参数,路径,实在是太麻烦啦。大家有没有想过自已也来做一个每日第一次开机自动备份注册表文件呢?其实我们完全可以通过批处理来完成这一功能,下面这个批处理就是只在每日第一次开机时备份注册表文件到一个自定义的文件夹,恢复时只要直接把文件拷贝过去,或者再做一个批处理,让它自动恢复就行啦。是不是方便多了呢?
下面来看看如何做这个批处理文件:
1、首先在C:新建一个供操作的目录:regback
C:MD REGBACK
2、在该目录下做一个当日日期文件date1.txt
c:echo.|date>c:regbackdate1.txt
由于DATE命令是一个显示与修改当前日期的命令,当不需要修改日期时,则需要由用户按回车键结束这个命令,为了尽量减少在程序实现过程中的人为干预,我在这里用管道命令将ECHO.产生的回车传递给date命令,以达到DATE命令能自动完成的目的。在下面的批处理中还将要用到这一命令。
3、新建一个regback.bat文件,并用记事本打开输入以下内容:
echo off 关闭回显
echo.|date>c:regbackdate2.txt 新建一个当日日期文件 date2.txt
cls
fc c:regbackdate1.txt c:regbackdate2.txt>c:regbackfc.txt 对比已有的
日期文件与今日日期文件并将对比结果保存为fc.txt
type c:regbackfc.txt|find "-" 查找对比结
果中是否存在日期分隔符"-",如果有则说明两日期
文 件不相同(即不是同一天的日期文件).
if errorlevel 1 goto noback 如果没有找
到"-"即两个日期文件为同一天日期文件,转至noback
REM **如果两个日期文件不相同,则执行以下程序***
del c:regback*.dat
del c:regback*.ini 删除当前的过期备份
cd regback
attrib -s -h -r c:windowssystem.dat
copy c:windowssystem.dat
attrib +s +h +r c:windowssystem.dat
attrib -s -h -r c:windowssystem.ini
copy c:windowssystem.ini
attrib +s +h +r c:windowssystem.ini
attrib -s -h -r c:windowsuser.dat
copy c:windowsuser.dat
attrib +s +h +r c:windowsuser.dat
attrib -s -h -r c:windowswin.ini
copy c:windowswin.ini
attrib +s +h +r c:windowswin.ini 以上操作是备份注册表文件
del date1.txt
ren date2.txt date1.txt 完成日期文件的更新
del fc.txt
echo Back up and finish ! 显示备份完成提示
goto end 备份完成,转向END
:noback NOBACK分支,当两个日期文件
相同(即同日的日期文件)时执行这 个分支
echo today is backup 显示提示:今日已备份过注册表文件
del c:regbackdate2.txt
del c:regbackfc.txt 删除产生的垃圾文件
:end
4、将以上bat文件保存到C:下,并在autoexec.bat中加入一句
call regback.bat
call命令的功能是在DOS批处理文件中调用另一个批处理而不会引起本批处理程序中断,它所调用的批处理可以是一个带参数的批处理程序。这样,在每次启动计算机时,就会自动运行这个批处理,但这个批处理只会在每天的第一次开机时备份注册表。
经过以上操作之后,我们可以试着运行一下这个批处理程序,你会发现屏幕提示(如图today.jpg)是:today is backup,这是因为date1.txt是我们今天用手动产生的日期文件,与批处理产生的date2.txt是同一天的日期文件,所以它不会备份注册表。进入c:regback打开date1.txt,把日期:04-22-2003更改为:04-21-2003,再运行看看,是不是提示备份注册表完成?(如图:finish.jpg)
你还可以很轻易地做一个注册表还原批处理,这样,就算以后注册表崩溃了,也不用费脑筋去想那些路径命令什么的了^_^
regback.bat清单
*******************************************************
echo off
echo.|date>c:regbackdate2.txt
cls
fc c:regbackdate1.txt c:regbackdate2.txt>c:regbackfc.txt
type c:regbackfc.txt|find "-"
if errorlevel 1 goto noback
REM **如果两个日期文件不相同,则执行以下程序***
del c:regback*.dat
del c:regback*.ini
cd regback
attrib -s -h -r c:windowssystem.dat
copy c:windowssystem.dat
attrib +s +h +r c:windowssystem.dat
attrib -s -h -r c:windowssystem.ini
copy c:windowssystem.ini
attrib +s +h +r c:windowssystem.ini
attrib -s -h -r c:windowsuser.dat
copy c:windowsuser.dat
attrib +s +h +r c:windowsuser.dat
attrib -s -h -r c:windowswin.ini
copy c:windowswin.ini
attrib +s +h +r c:windowswin.ini
del date1.txt
ren date2.txt date1.txt
del fc.txt
echo Back up and finish !
goto end
:noback
echo today is backup
del c:regbackdate2.txt
del c:regbackfc.txt
:end
标签: