返回列表 上一主題 發帖

[教學] 用批次檔BAT指令XCOPY執行備份的功能介紹

[教學] 用批次檔BAT指令XCOPY執行備份的功能介紹

XCOPY:複製檔案和樹狀目錄。

指令詳解:

XCOPY source [destination] [/A | /M] [/D[:date] [/P] [/S [/E] [/V] [/W]
             [/C] [/Q] [/F] [/L] [/H] [/R] [/T]
             [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\r
             [/EXCLUDE:file1[+file2][+file3]...]

source       指定要複製的檔案。
destination 指定位置或者/以及新檔案的名稱。
/A            只複製設定成保存屬性的檔案,不要改變屬性的設定。
/M            只複製設定成保存屬性的檔案,並清除保存屬性。
/D:m-d-y   複製在指定日期當天或之後發生變更的檔案。如果沒有給日期,只複製那些來源檔案日期比目的檔案日期為新的檔案。
/EXCLUDE:file1[+file2][+file3]...
             指定檔案清單字串。如果有字串對應到要進行複製的檔案絕對路徑的任何部分,這個檔案會被排除複製。
         例如,指定字串obj 或 .obj 的話,會排除所有在 obj 目錄下副檔名是.obj 的檔案複製。
/P          在建立每個目的檔案時顯示提示。
/S          複製每個目錄及其包含的子目錄,不複製空目錄。
/E          複製每個目錄及其包含的子目錄,也複製空目錄。/S 與 /E相同,能夠用來修改 /T。
/V          驗證每個新檔案。
/W          在複製之前提示您按鍵繼續。
/C          如果錯誤發生時也繼續複製。
/I          如果目的不存在且複製一個以上的檔案的話,就假設指定的目的一定是目錄。
/Q          在複製時不要顯示檔名。
/F          在複製時顯示來源及目的檔案的全部檔名。
/L          顯示要複製的檔案。
/H          時複製隱藏檔和系統檔。
/R          覆蓋唯讀檔案。
/T          建立目錄結構,但不複製其中的檔案。不包括空目錄及子目錄。/T /E 會包括空目錄及子目錄。
/U          只複製已經存在目的位置的檔案。
/K          複製檔案屬性。通常 Xcopy 會重設唯讀的屬性。
/N          用所產生的短檔名來進行複製。
/O          複製檔案所有權及 ACL 資訊。
/X          複製檔案審查設定 (包含 /O)。
/Y          不要提示您確認是否要覆蓋一個已經存在的檔案。
/-Y         示您確認是否要覆蓋一個已經存在的檔案。
/Z          在可重新開始的模式中複製網路檔案。

參數 /Y 可以在 COPYCMD 環境變數中預先設定。但可以在指令行中用/-Y 參數來覆蓋原有設定。

------------------------------------------------------------------------------------------
範例一:

微軟作業系統內建指令XCOPY備份功能介紹

您是否曾遇到硬碟或隨身碟故障,導致檔案損壞的情況,此時才後悔沒備份。
但備份工作既耗時又常碰到問題,有時備份到一半出現錯誤訊息,到底備份多少也不知道,還要重來!
因此,介紹一個具有以下特色的備份方法。

不需購買或安裝軟體
可完全備份或只備份日期較新的檔案
備份的檔案如損壞可以跳過繼續備份其它檔案
可利用系統排程做定時備份

設計原理

建立一個批次執行檔(bat),裡面放一行Windows所提供的XCOPY指令,再加入適當的參數就可以輕鬆完成備份工作。

操作流程

1.執行記事本:點選[程式集]/[附屬應用程式]/[記事本]

2.輸入以下指令(可用複製/貼上功能再自行修改內容)

XCOPY . D:\隨身碟備份\ /D/K/E/Y/C/I/H

指令:XCOPY
來源:點號 . ,表示複製此批次執行檔所存放位置的所有檔案。
目的:D:\隨身碟備份\,表示複製到目的地為D碟的[隨身碟備份]資料夾內。
參數:/D/K/E/Y/C/I/H
註:
/D只複製比目的檔還新的檔案,
/K複製後檔案屬性不變,
/E包含子目錄,
/Y不要求確認,
/C錯誤發生也繼續,
/I目的不存在就建立資料夾,
/H複製隱藏檔和系統檔。

3.將檔案存在您要備份的磁碟機或資料夾內(一定要切換存檔類型為所有檔案,且副檔名一定要輸入.bat)。

4.用檔案總管點兩下執行設計完成的批次檔(bat檔),開始進行備份工作。

5.往後要做備份,只要點兩下此批次檔即可,且備份速度比第一次快很多哦!(因為它只拷貝比目的檔還新的檔案)

Windows XP排程設計

 以上提供的是半自動的備份方法,如果要完成全自動定時做備份的工作可以利用Windows內建的[排定的工作],定時執行我們所建立的批次執行檔(bat),完成定時備份的功能。操作流程如下:

操作流程

1.開啟[程式集]/[附屬應用程式]/[系統工具]/[排定的工作]。

2.點選[下一步] 。

3.按[瀏覽]挑選我們設計好要備份用的批次檔。

4.挑選工作執行的方式,例如:每日、每週、每月。

5.輸入開始時間。

6.輸入此電腦開機時所使用的帳號及密碼。

7.完成。

-----------------------------------------------------------------------------------------------
範例二:

使用XCOPY依日期備份到不同資料夾的方法

現在的硬碟空間越來越大,因此備份檔案時,如果能依日期的不同備份到不同的資料夾,在拯救檔案時將更具有彈性。

操作流程

1.開啟[程式集]/[附屬應用程式]/[記事本]

2.輸入以下兩行指令(可用複製/貼上功能再自行修改內容)

FOR /F "tokens=1-3 delims=/ " %%a IN ("%date%") DO (SET _today=%%a%%b%%c)

XCOPY . D:\%_today% /D/K/E/Y/C/I/H

程式說明:

REM 去掉有分隔符號的日期資料放在_today變數

FOR /F "tokens=1-3 delims=/ " %%a IN ("%date%") DO (SET _today=%%a%%b%%c)

REM 備份檔案到D碟今天的日期資料夾內

XCOPY . D:\%_today% /D/K/E/Y/C/I/H

FOR /F 是指將後面 %date% 環境變數的值拿來做循環處理。

"tokens=1-3 delims=/ " 表示利用「/」與「 」(空白)這兩個分割符號來切割 %date% 環境變數的值,取得順序 1 ~ 3 的字串。

%%a 是指切割出來順序 1 的字串給 %%a 變數,順序 2 的字串給 %%b,其它依此類推。

DO 後面指定 _today 變數,它的內容是由 %%a%%b%%c 所構成。

假如 %date% 環境變數的值為: 2013/08/08星期二,經過程式的切割處理就變成:20130808

3.將檔案存在您要備份的磁碟機或資料夾內(一定要切換存檔類型為所有檔案,且副檔名一定要輸入.bat)。

4.用檔案總管點兩下即可執行設計完成的批次檔(bat檔),開始進行備份工作。

相關程式說明

REM去除有分隔符號的時間資料放在_mytime變數

FOR /F "tokens=1-4 delims=:." %%a IN ("%time%") DO (SET _mytime=%%a%%b%%c%%d)

echo %_mytime%

程式說明:假如 %time% 環境變數的值為: 15:13:31.21,經過程式的切割處理就變成:15133121

REM刪除D碟BACKUP資料夾內所有檔案及目錄

RD /S/Q D:\BACKUP

參數說明如下:

/S 一併刪除指定目錄裡的所有目錄和檔案

/Q 不再要求確認刪除

公司備份資料庫
都會用到這個指令去排程備份
還蠻實用的,但目前有遇到一個問題
就是遇到重複檔案時
是否可以略過,來研究一下,謝謝~

TOP

Windows 7新增的「robocopy」指令,在大量複製檔案時特別有效率(例如備份或搬移整顆硬碟)。
Lin

TOP

回復 3# lin

這指令功能太強了,下面2個參數是XCOPY無法達成的,可以達成同步備份的功能。
             /PURGE :: 刪除來源已經不存在的目的地檔案/目錄。
               /MIR :: 鏡像樹狀目錄 (相當於 /E 加 /PURGE)。

感謝2位提供很好的備份方式
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

真是神奇總覺得很不可思議...
原來是我見識少..
hihi  = =

TOP

對於大量移轉檔案相當便利,比較推robocopy 指令,功能較強大

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題