Xcopy 複製檔案和目錄,包括子目錄
阿新 • • 發佈:2019-02-08
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 語句中指示的標籤,然後顯示相應的訊息並退出批處理程式。