顯示具有 Windows - Batch File Command 標籤的文章。 顯示所有文章
顯示具有 Windows - Batch File Command 標籤的文章。 顯示所有文章

2007年3月7日

懶人一族的資料備份方案

懶人一族的資料備份方案
xcopy D:\command\111\*.* D:\command\222 /s /e /c /i /y

決定了需要備份的資料檔後,有沒有方法可以讓懶人也可以經常備份?答案是:有!只要最初的時候花三十分鐘(或更少)寫一個批次檔Batch File,只針對這類資料檔案作備份。﹝以下這些資料只適合Windows 95/98/Me/NT/2000用戶,其他作業系統的用者請不吝賜教吧!﹞

甚麼是批次檔?簡單來說,它是一個純文字檔,裡頭有一些Windows前身的DOS指令而已。以下是筆者自己所寫的一個批次檔 lazybkup.bat,裡面包含了「把筆者硬碟內的好幾十個個人網頁原始檔﹝包括所有子目錄檔案﹞及Netscape 4.7的書籤複製到軟碟機和硬碟另一個目錄裡」的指令。當筆者一按滑鼠左鍵,它就會自動進行備份,而且只把未複製過的或更新過的檔案複製。

xcopy "c:\my documents\homepage\*.*" a:\homepage\ /d /s /e /c /i /y
xcopy "c:\my documents\homepage\*.*" c:\backup\homepage\ /d /s /e /c /i /y
xcopy "c:\program files\netscape\users\franklenchoi\bookmark.htm" a:\bookmark\ /d /c /i /y
xcopy "c:\program files\netscape\users\franklenchoi\bookmark.htm" c:\backup\bookmark\ /d /c /i /y


這個指令叫 xcopy,它的語法是:

XCOPY(空格)要被複製的檔案的路徑(空格)存放複製品的目錄(空格)
[/a/m][/d[:date]][/p][/s[/e]][/w][/c][/i][/q][/f][/l][/h][/r][/t][/u][/k][/n][/y/~y]
(後面的英文字母是xcopy各項功能的開關制─如有興趣可參考附錄)


要建立這個批次檔,只需開啟記事本(notepad),輸入上述指令,然後以 ".bat" 的副檔名儲存即可。你可以根據你要備份的資料檔的路徑和用來備份的媒介﹝如軟碟片、Zip Disk、第二個實體硬碟、硬碟第二個目錄、網絡硬碟[如已與另一部電腦連線]等﹞適當地為你自己度身訂造一個專門備份資料的批次檔﹝首次使用後最好檢查一下檔案是否已成功複製﹞。

(如果你連自己寫批次檔都覺麻煩,這裡有一個簡單的中文界面備份工具或許可考慮。﹞

這個懶人備份方案有以下的優點:
1) 你可以把批次檔拖曳到桌面,每次修改完一個文件後,簡單按一下鍵, 就會替你即時把所有更新過的資料檔備份,很易養成習慣,沒有不備份的藉口。

2) 若你把這個批次檔放入Windows「開始功能表」的「啟動」資料夾內,或與Windows附設的系統工具「安排的工作」(Task Scheduler)一起使用,就可以在每次開機或其他任何預較的時間自動幫你備份,連一下滑鼠鍵也不用按,懶惰指數=100,000,000,000!

這個備份方案有以下的 缺點:

1)如果你用作備份的媒介只是軟碟片,會較受容量的限制,可能需要把大的資料夾分拆開備份﹝特別是微軟的doc檔很佔空間﹞﹝順便一提,在一個無塵、無磁場、防潮和陰涼的環境中,一片軟碟片的壽命一般也不超過五年──因此別把希望寄托在「單一隻」軟碟片上!﹞。但如果你有一部外置Zip Drive/ 網絡硬碟/第二部硬碟,或就算只把檔案複製到硬碟另一個目錄/分割區也好﹝以防止意外地把檔案刪除─這比全不作備份也較好...﹞,這個方案會很方便! (留意Zip專利格式的問題─即一旦生產商消失時找不到支援其「標準」的軟硬體的風險;這方面要給CD-R/RW比下去了...﹞

2)這個方案不適宜備份已安裝的系統檔案和應用程式(這涉及視窗registry裡頭檔案記錄的短檔名和長檔名的關聯問題),否則恐怕回復備份後,會有當機的後果﹝參考:http://www.pcguide.com/art/xcopy.htm ;此外,一個據稱修正了前述 xcopy指令問題的免費軟體 - "xxcopy" - 可在這裡下載)。
--------------------------------------------------------------------------------

附錄:XCOPY 指令的開關制 ( http://www.computerhope.com/xcopyhlp.htm )

XCOPY source [destination] [/a /m] [/d[:date]] [/p] [/s [/e]] [/v] [/w] [/c] [/i] [/q] [/f] [/l] [/h] [/r] [/t] [/u] [/k] [/n] [/y/~y]

source 指定複製檔案。
destination 指定新檔案的位置或名稱。

/a 複製保存屬性的檔案,不變更屬性。
/m 複製保存屬性的檔案,複製後清除保存屬性
/d:m-d-y 複製檔案日期為指定日期或指定日期之後的檔案。若不指定日期,只會複製來源檔案的日期比目標檔案的日期還新的檔案。
/p 建立目標檔案之前顯示提示視窗。
/s 複製目錄及子目錄,但不複製空目錄。
/e 複製目錄及子目錄,也複製空目錄。與 /s /e 相同,通常用來修改 /t。
/v 確認每個新檔案。
/w 進行複製之前顯示提示,您可用按鍵確認執行。
/c 發生錯誤仍繼續進行複製。
/i 如果複製目標不存在,而且您複製多個檔案,就把複製目標設定為目錄。
/q 複製時不顯示檔案名稱。
/f 複製顯示完整的來源名稱及目標名稱。
/l 顯示複製檔案的名稱。
/h 一併複製隱藏檔案及系統檔案。
/r 覆寫唯讀檔案。
/t 建立目錄結構,但不要複製檔案,也不要複製空目錄及空子目錄。 /t /e 表示要複製空目錄及空子目錄。
/u 只複製存在於目的地中的檔案
/k 複製屬性。通常 xcopy 會重設唯讀檔案。
/n 複製時產生短檔名。
/y 覆寫既存檔案前不作提示
/~y覆寫既存檔案前作提示

(其他有關使用xcopy指令的有用資料,可參考 http://www3.sympatico.ca/rhwatson/dos7/z-xcopy.html )

Windows批次檔(Batch File)專用指令

一些Windows批次檔(Batch File)專用指令:

1.rem:批次檔的註解,可增加批次檔的閱讀性,類似Java的單行註解//。

2.echo:將文字輸出於螢幕上,類似Java的System.out.print()。

3.echo on:將批次檔內所下的指令全部顯示在螢幕上。

4.echo off:批次檔內所下的指令全部隱藏,不顯示於螢幕上。

5.goto:轉移控制權,可以指示批次檔跳至某一標記。

6.@:前面加上@符號的指令,執行批次檔時不會將指令文字敘述顯示於螢幕上。

7.%:批次檔參數,最多可以有10個參數值(由%1至%10),於批次檔內類似Java
的main(String[] args)參數用法,%1等於args[0]。

8.pause:暫停批次檔的執行,並在螢幕上顯示Press any key to continue。

9.if exist:檢查某一檔案是否存在,若存在則條件成立,執行指定的命令。例n 1234
@echo off
rem 檔名:test.bat
if exist Test.java javacBatTest.bat
echo Test.java檔案不存在



123456
@echo off
rem 檔名:javacBatTest.bat
javac Test.java
java Test
echo 程式執行完畢
pause



如果Test.java不存在的話,執行test.bat會顯示出Test.java檔案不存在。
如果Test.java存在的話,執行test.bat時便會呼叫javacBatTest.bat,然後
編譯與執行Test.java並將結果顯示於螢幕上。

10.if 字串1==字串2:2字串相等的話,則執行所指定的指令。

11.if not:當測試條件不成立時才執行後面命令。例:
12345
@echo off
rem 檔名:test2.bat
if %OS% == Windows_NT echo 此作業系統為NT架構
if not %OS% == Windows_NT echo 此作業系統非NT架構!
pause



如果執行此BAT的作業系統是NT、2000、XP pro則會顯示"此作業系統為NT
架構",如果為98、Me、XP home則會顯示"此作業系統非NT架構"。

12.if errorlevel:由OS所管理的一個系統變數,目的是監視所有錯誤發
生的情況。

13.call:模組化設計,可用來呼叫另一個批次檔,類似java中method的呼叫。