1. 程式人生 > >Xcopy 複製檔案和目錄,包括子目錄

Xcopy 複製檔案和目錄,包括子目錄

Xcopy
複製檔案和目錄,包括子目錄。 

語法 
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] 

引數 
Source  
必需的。指定要複製的檔案的位置和名稱。該引數必須包含驅動器或路徑。  
Destination  
指定要複製的檔案的目標。該引數可以包含驅動器碟符和冒號、目錄名、檔名或者它們的組合。  


/w  
在開始複製檔案之前將顯示以下訊息並等待您的響應:  
Press any key to begin copying file(s)  

/p  
提示您確認是否要建立每個目標檔案。  
/c  
忽略錯誤。  
/v  
在寫入目標檔案時驗證每個檔案,以確保目標檔案與原始檔完全相同。  
/q  
禁止顯示 xcopy 訊息。  
/f  
複製時顯示原始檔名和目標檔名。  
/l  
顯示要複製的檔案列表。  
/g  
建立解密的目標檔案。  
/d[:mm-dd-yyyy]  
只複製那些在指定日期或指定日期之後更改過的原始檔。如果不包括 mm-dd-yyyy 值,xcopy 會複製比現有 Destination 檔案新的所有 Source 檔案。該命令列選項使您可以更新更改過的檔案。  

/u  
只從 source 複製 destination 中已有的檔案。  
/i  
如果 Source 是一個目錄或包含萬用字元,而 Destination 不存在,xcopy 會假定 destination 指定目錄名並建立一個新目錄。然後,xcopy 會將所有指定檔案複製到新目錄中。預設情況下,xcopy 將提示您指定 destination 是檔案還是目錄。  
/s  
複製非空的目錄和子目錄。如果省略 /s,xcopy 將在一個目錄中工作。  
/e  
複製所有子目錄,包括空目錄。同時使用 /e、/s 和 /t 命令列選項。  
/t  
只複製子目錄結構(即目錄樹),不復制檔案。要複製空目錄,必須包含 /e 命令列選項。  

/k  
複製檔案,如果原始檔具有隻讀屬性,則在目標檔案中保留該屬性。預設情況下,xcopy 會刪除只讀屬性。  
/r  
複製只讀檔案。  
/h  
複製具有隱藏和系統檔案屬性的檔案。預設情況下,xcopy 不復制隱藏或系統檔案。  
/a  
只複製那些具有存檔檔案屬性設定的原始檔。/a 不修改原始檔的存檔檔案屬性。有關如何通過使用 attrib 來設定存檔檔案屬性的資訊,請參閱“”。  
/m  
複製具有存檔檔案屬性設定的原始檔。與 /a 不同,/m 關閉在源中指定的檔案的存檔檔案屬性。有關如何通過使用 attrib 來設定存檔檔案屬性的資訊,請參閱“”。  
/n  
使用 NTFS 短檔案或目錄名建立副本。將檔案或目錄從 NTFS 卷複製到 FAT 卷或者當目標檔案系統需要 FAT 檔案系統命名約定(即 8.3 個字元)時,需要 /n。目標檔案系統可以是 FAT 或 NTFS。  
/o  
複製檔案所有權與自由選擇的訪問控制列表 (DACL) 資訊。  
/x  
複製檔案稽核設定和系統訪問控制列表 (SACL) 資訊(包含 /o)。  
/exclude:filename1[+[filename2]][+[filename3]]  
指定包含字串的檔案列表。  
/y  
禁止提示您確認要覆蓋現存的目標檔案。  
/-y  
提示您確認要覆蓋現有目標檔案。  
/z  
在可重啟模式中通過網路複製。  
/?  
在命令提示符顯示幫助。  
註釋 
使用 /v  
XOX 

使用 /exclude  
列出每個檔案的單獨行中的每個字串。如果列出的任何字串與要複製的檔案的絕對路徑的任何部分匹配,就從複製程序排除該檔案。例如,如果指定字串 "\Obj\",則會排除 Obj 目錄下的所有檔案。如果指定字串 ".obj",則排除具有 .obj 副檔名的所有檔案。 

使用 /z  
如果在複製過程中丟失連線(例如,如果用於連線的伺服器離線),複製過程將在重新建立連線後恢復。/z 也顯示每個檔案完成的複製操作的百分比。 

在 COPYCMD 環境變數中使用 /y  
可在 COPYCMD 環境變數中使用 /y。在命令列上使用 /-y 可以覆蓋該命令。預設情況下,會提示您覆蓋,除非您從批處理指令碼內執行 copy。 

複製加密的檔案  
將加密檔案複製到不支援 EFS 的卷會導致錯誤。應首先解密檔案或將檔案複製到支援 EFS 的卷中。 

附屬檔案  
要附加檔案,請指定單個目標檔案,多個原始檔(使用萬用字元或檔案 1 + 檔案 2 + 檔案 3 格式)。 

Destination 的預設值  
如果省略 Destination,xcopy 命令將檔案複製到當前目錄。 

指定 Destination 是檔案還是目錄  
如果 Destination 不包含現有目錄且不以反斜槓 (\) 結尾,會出現下列訊息:  

Does destination specify a file name  
or directory name on the target  
(F = file, D = directory)?  

如果要將一個或多個檔案複製到一個檔案,請按 F。如果要將一個或多個檔案複製到一個目錄,請按 D。 

使用 /i 命令列選項可抑制顯示該訊息,從而導致 xcopy 認定在源是多個檔案或一個目錄的情況下,目標是一個目錄。 

使用 xcopy 命令設定 Destination 檔案的存檔屬性
xcopy 命令建立具有存檔屬性設定的檔案,無論原始檔中是否設定了此屬性。有關檔案屬性和 attrib 的詳細資訊,請參閱“”。 

比較 xcopy 和 diskcopy
如果磁碟的子目錄中包含檔案,要將其複製到具有不同格式的磁碟中,請使用 xcopy 命令,而不要使用 diskcopy。因為 diskcopy 命令是一個磁軌接一個磁軌地複製磁碟,所以需要源磁碟和目標磁碟的格式必須相同。xcopy 命令沒有該要求。通常情況下請使用 xcopy,除非您需要完整的磁碟影象副本。 

xcopy 的退出碼
要處理 xcopy 返回的退出碼,請在批處理程式的 if 命令列上使用 errorlevel 引數。有關使用“if”處理退出碼的批處理程式的範例,請參閱“”。下表列出每一個退出碼和說明。 

退出碼 說明  
0 檔案複製沒有錯誤。  
1 沒有找到要複製的檔案。  
2 使用者按 CTRL+C 終止了 xcopy。  
4 出現了初始化錯誤。沒有足夠的記憶體或磁碟空間,或命令列上輸入了無效的驅動器名稱或語法。  
5 出現了磁碟寫入錯誤。  

範例 
要從驅動器 A 將所有檔案和子目錄(包括所有空的子目錄)複製到驅動器 B,請鍵入:  

複製程式碼程式碼如下:
xcopy a: b: /s /e 

要包含上一示例中的任何系統或隱藏檔案,請按如下所示新增 /h 命令列選項: 

複製程式碼程式碼如下:
xcopy a: b: /s /e /h


要使用 \Rawdata 目錄中 1993 年 12 月 29 日後更改的檔案更新 \Reports 目錄中的檔案,請鍵入:  

xcopy \rawdata \reports /d:12-29-1993  

要更新上例中 \Reports 中存在的所有檔案,而不考慮日期,請鍵入: 

xcopy \rawdata \reports /u 

如果只想獲得前一個命令要複製的檔案列表,而不復制檔案,請鍵入: 

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out 

檔案 Xcopy.out 列出了要複製的所有檔案。 

要將 \Customer 目錄和所有子目錄複製到網路驅動器 H: 上的目錄 \\Public\Address,保留只讀屬性,並在 H: 上建立新檔案時對您做出提示,請鍵入: 

xcopy \customer h:\public\address /s /e /k /p 

要發出上一個命令,確保在 \Address 目錄不存在時 xcopy 會建立該目錄,同時應抑制顯示建立新目錄時要顯示的訊息,請按如下所示新增 /i 命令列選項: 

xcopy \customer h:\public\address /s /e /k /p /i 

可以建立批處理程式執行 xcopy 操作,並且使用 if 批處理命令在發生錯誤時處理退出碼。例如,以下的批處理程式使用可替換的 xcopy 源和目標引數:  

複製程式碼程式碼如下:
@echo off 
rem COPYIT.BAT transfers all files in all subdirectories of 
rem the source drive or directory (%1) to the destination 

rem drive or directory (%2) 

xcopy %1 %2 /s /e 

if errorlevel 4 goto lowmemory 
if errorlevel 2 goto abort 
if errorlevel 0 goto exit 

:lowmemory 
echo Insufficient memory to copy files or 
echo invalid drive or command-line syntax. 
goto exit 

:abort 
echo You pressed CTRL+C to end the copy operation. 
goto exit 

:exit 

要使用該批處理程式將 C:\Prgmcode 目錄和其子目錄中的所有檔案複製到驅動器 B 中,請鍵入:  

copyit c:\prgmcode b:  

該命令解釋程式將用 C:\Prgmcode 替換 %1 與 B:。對於 %2,然後使用 xcopy 與 /e 和 /s 命令列選項。如果 xcopy 遇到錯誤,批處理程式將讀取退出碼並轉到相應 IF ERRORLEVEL 語句中指示的標籤,然後顯示相應的訊息並退出批處理程式。