大家知道,WINDOWS操作系統(tǒng)對(duì)注冊(cè)表的保護(hù)有一個(gè)非常實(shí)用的功能,就是系統(tǒng)在用戶當(dāng)天第一次開(kāi)機(jī)時(shí)會(huì)自動(dòng)將WINDOWS/目錄下的
SYSTEM.DAT SYSTEM.INI USER.DAT WIN.INI
這四個(gè)注冊(cè)表文件打成CAB包存放在WINDOWS/SYSBCKUP/目錄下,由于系統(tǒng)默認(rèn)保存最近5個(gè)開(kāi)機(jī)日備份的注冊(cè)表文件包,所以它們分別以rb000.cab~rb004.cab命名存放。
對(duì)于這個(gè)CAB文件包,我們可以在DOS狀態(tài)下用WINDOWS/COMMAND/目錄下的EXTRACT.EXE來(lái)解壓,也可以在DOS狀態(tài)下進(jìn)入windows/目錄用命令:
scanreg.exe/restore
來(lái)恢復(fù)注冊(cè)表。相信WINDOWS提供的這個(gè)功能一定幫助了不少的注冊(cè)表狂熱分子來(lái)對(duì)付注冊(cè)表崩潰吧?但每次恢復(fù)都要記住這些命令,參數(shù),路徑,實(shí)在是太麻煩啦。大家有沒(méi)有想過(guò)自已也來(lái)做一個(gè)每日第一次開(kāi)機(jī)自動(dòng)備份注冊(cè)表文件呢?其實(shí)我們完全可以通過(guò)批處理來(lái)完成這一功能,下面這個(gè)批處理就是只在每日第一次開(kāi)機(jī)時(shí)備份注冊(cè)表文件到一個(gè)自定義的文件夾,恢復(fù)時(shí)只要直接把文件拷貝過(guò)去,或者再做一個(gè)批處理,讓它自動(dòng)恢復(fù)就行啦。是不是方便多了呢?
下面來(lái)看看如何做這個(gè)批處理文件:
1、首先在C:新建一個(gè)供操作的目錄:regback
C:/MD REGBACK
2、在該目錄下做一個(gè)當(dāng)日日期文件date1.txt
c:/echo.|date>c:/regback/date1.txt
由于DATE命令是一個(gè)顯示與修改當(dāng)前日期的命令,當(dāng)不需要修改日期時(shí),則需要由用戶按回車(chē)鍵結(jié)束這個(gè)命令,為了盡量減少在程序?qū)崿F(xiàn)過(guò)程中的人為干預(yù),我在這里用管道命令將ECHO.產(chǎn)生的回車(chē)傳遞給date命令,以達(dá)到DATE命令能自動(dòng)完成的目的。在下面的批處理中還將要用到這一命令。
3、新建一個(gè)regback.bat文件,并用記事本打開(kāi)輸入以下內(nèi)容:
echo off //關(guān)閉回顯
echo.|date>c:/regback/date2.txt //新建一個(gè)當(dāng)日日期文件 date2.txt
cls
fc c:/regback/date1.txt c:/regback/date2.txt>c:/regback/fc.txt //對(duì)比已有的
日期文件與今日日期文件并將對(duì)比結(jié)果保存為fc.txt
type c:/regback/fc.txt|find "-" //查找對(duì)比結(jié)
果中是否存在日期分隔符"-",如果有則說(shuō)明兩日期
文 件不相同(即不是同一天的日期文件).
if errorlevel 1 goto noback //如果沒(méi)有找
到"-"即兩個(gè)日期文件為同一天日期文件,轉(zhuǎn)至noback
REM **如果兩個(gè)日期文件不相同,則執(zhí)行以下程序***
del c:/regback/*.dat
del c:/regback/*.ini //刪除當(dāng)前的過(guò)期備份
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 //以上操作是備份注冊(cè)表文件
del date1.txt
ren date2.txt date1.txt //完成日期文件的更新
del fc.txt
echo Back up and finish ! //顯示備份完成提示
goto end //備份完成,轉(zhuǎn)向END
:noback //NOBACK分支,當(dāng)兩個(gè)日期文件
相同(即同日的日期文件)時(shí)執(zhí)行這 個(gè)分支
echo today is backup //顯示提示:今日已備份過(guò)注冊(cè)表文件
del c:/regback/date2.txt
del c:/regback/fc.txt //刪除產(chǎn)生的垃圾文件
:end
4、將以上bat文件保存到C:/下,并在autoexec.bat中加入一句
call regback.bat
call命令的功能是在DOS批處理文件中調(diào)用另一個(gè)批處理而不會(huì)引起本批處理程序中斷,它所調(diào)用的批處理可以是一個(gè)帶參數(shù)的批處理程序。這樣,在每次啟動(dòng)計(jì)算機(jī)時(shí),就會(huì)自動(dòng)運(yùn)行這個(gè)批處理,但這個(gè)批處理只會(huì)在每天的第一次開(kāi)機(jī)時(shí)備份注冊(cè)表。
經(jīng)過(guò)以上操作之后,我們可以試著運(yùn)行一下這個(gè)批處理程序,你會(huì)發(fā)現(xiàn)屏幕提示(如圖today.jpg)是:today is backup,這是因?yàn)閐ate1.txt是我們今天用手動(dòng)產(chǎn)生的日期文件,與批處理產(chǎn)生的date2.txt是同一天的日期文件,所以它不會(huì)備份注冊(cè)表。進(jìn)入c:/regback/打開(kāi)date1.txt,把日期:04-22-2003更改為:04-21-2003,再運(yùn)行看看,是不是提示備份注冊(cè)表完成?(如圖:finish.jpg)
你還可以很輕易地做一個(gè)注冊(cè)表還原批處理,這樣,就算以后注冊(cè)表崩潰了,也不用費(fèi)腦筋去想那些路徑命令什么的了^_^
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 **如果兩個(gè)日期文件不相同,則執(zhí)行以下程序***
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
新聞熱點(diǎn)
疑難解答
圖片精選