大家知道,WINDOWS操作系統對注冊表的保護有一個非常實用的功能,就是系統在用戶當天第一次開機時會自動將WINDOWS/目錄下的
SYSTEM.DAT SYSTEM.INI USER.DAT WIN.INI
這四個注冊表文件打成CAB包存放在WINDOWS/SYSBCKUP/目錄下,由于系統默認保存最近5個開機日備份的注冊表文件包,所以它們分別以rb000.cab~rb004.cab命名存放。
對于這個CAB文件包,我們可以在DOS狀態下用WINDOWS/COMMAND/目錄下的EXTRACT.EXE來解壓,也可以在DOS狀態下進入windows/目錄用命令:
scanreg.exe/restore
來恢復注冊表。相信WINDOWS提供的這個功能一定幫助了不少的注冊表狂熱分子來對付注冊表崩潰吧?但每次恢復都要記住這些命令,參數,路徑,實在是太麻煩啦。大家有沒有想過自已也來做一個每日第一次開機自動備份注冊表文件呢?其實我們完全可以通過批處理來完成這一功能,下面這個批處理就是只在每日第一次開機時備份注冊表文件到一個自定義的文件夾,恢復時只要直接把文件拷貝過去,或者再做一個批處理,讓它自動恢復就行啦。是不是方便多了呢?
下面來看看如何做這個批處理文件:
1、首先在C:新建一個供操作的目錄:regback
C:/MD REGBACK
2、在該目錄下做一個當日日期文件date1.txt
c:/echo.|date>c:/regback/date1.txt
由于DATE命令是一個顯示與修改當前日期的命令,當不需要修改日期時,則需要由用戶按回車鍵結束這個命令,為了盡量減少在程序實現過程中的人為干預,我在這里用管道命令將ECHO.產生的回車傳遞給date命令,以達到DATE命令能自動完成的目的。在下面的批處理中還將要用到這一命令。
3、新建一個regback.bat文件,并用記事本打開輸入以下內容:
echo off //關閉回顯
echo.|date>c:/regback/date2.txt //新建一個當日日期文件 date2.txt
cls
fc c:/regback/date1.txt c:/regback/date2.txt>c:/regback/fc.txt //對比已有的
日期文件與今日日期文件并將對比結果保存為fc.txt
type c:/regback/fc.txt|find "-" //查找對比結
果中是否存在日期分隔符"-",如果有則說明兩日期
文 件不相同(即不是同一天的日期文件).
if errorlevel 1 goto noback //如果沒有找
到"-"即兩個日期文件為同一天日期文件,轉至noback
REM **如果兩個日期文件不相同,則執行以下程序***
del c:/regback/*.dat
del c:/regback/*.ini //刪除當前的過期備份
cd regback
attrib -s -h -r c:/windows/system.dat
copy c:/windows/system.dat
attrib +s +h +r c:/windows/system.dat
attrib -s -h -r c:/windows/system.ini
copy c:/windows/system.ini
attrib +s +h +r c:/windows/system.ini
attrib -s -h -r c:/windows/user.dat
copy c:/windows/user.dat
attrib +s +h +r c:/windows/user.dat
attrib -s -h -r c:/windows/win.ini
copy c:/windows/win.ini
attrib +s +h +r c:/windows/win.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:/regback/date2.txt
del c:/regback/fc.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:/regback/date2.txt
cls
fc c:/regback/date1.txt c:/regback/date2.txt>c:/regback/fc.txt
type c:/regback/fc.txt|find "-"
if errorlevel 1 goto noback
REM **如果兩個日期文件不相同,則執行以下程序***
del c:/regback/*.dat
del c:/regback/*.ini
cd regback
attrib -s -h -r c:/windows/system.dat
copy c:/windows/system.dat
attrib +s +h +r c:/windows/system.dat
attrib -s -h -r c:/windows/system.ini
copy c:/windows/system.ini
attrib +s +h +r c:/windows/system.ini
attrib -s -h -r c:/windows/user.dat
copy c:/windows/user.dat
attrib +s +h +r c:/windows/user.dat
attrib -s -h -r c:/windows/win.ini
copy c:/windows/win.ini
attrib +s +h +r c:/windows/win.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:/regback/date2.txt
del c:/regback/fc.txt
:end
新聞熱點
疑難解答