共用方式為


xcopy

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

如需如何使用此命令的範例,請參閱 範例

Syntax

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:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

Parameters

Parameter Description
<源> Required. 指定您要複製之檔案的位置和名稱。 此參數必須包含磁碟驅動器或路徑。
[<目的地>] 指定您要複製之檔案的目的地。 此參數可以包含驅動器號和冒號、目錄名稱、檔名或這些組合。
/w 顯示下列訊息,並在開始複製檔案之前等候您的回應:
按任意鍵開始複製檔案(s)
/p 提示您確定是否要建立每個目的地檔案。
/c Ignores errors.
/v 確認每個檔案都寫入目的地檔案,以確保目的地檔案與來源檔案相同。
/q 隱藏訊息的 xcopy 顯示。
/f 複製時顯示來源和目的地檔名。
/l 產生要複製但不會主動複製檔案的檔案清單。
/g 當目的地不支援加密時,建立解密的 目的地 檔案。
/d [:MM-DD-YYYY] 只複製指定日期或之後變更的來源檔案。 如果您未包含 MM-DD-YYYY 值,xcopy則會複製所有比現有目的地檔案更新的來源檔案。 這個命令行選項可讓您更新已變更的檔案。
/u 來源 複製僅存在 於目的地 上的檔案。
/i 如果 來源 是目錄或包含萬用字元,且 目的地 不存在, xcopy 則假設 目的地 會指定目錄名稱並建立新目錄。 然後, xcopy 將所有指定的檔案複製到新的目錄中。 依預設, xcopy 會提示您指定 目的地 是檔案還是目錄。
/s 除非目錄是空的,否則會複製目錄和子目錄。 如果您省略 /sxcopy 則在單一目錄內運作。
/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]( )] 指定檔案清單。 至少必須指定一個檔案。 每個檔案都包含搜尋字串,其中每個字串都位於檔案中的個別行上。 當任一字串符合要複製之檔案絕對路徑的任何部分時,該檔案會排除在複製之外。 例如,指定字串 obj 將排除目錄 obj 下的所有檔案或副檔名為 .obj 的所有檔案。
/y 隱藏提示以確認您想要覆寫現有的目的地檔案。
/-y 提示以確認您想要覆寫現有的目的地檔案。
/z 以可重新啟動模式透過網路複製。
/b 複製符號連結,而不是檔案。 此參數是在 Windows Vista® 中引進的。
/j 複製檔案而不進行緩衝處理。 建議用於非常大的檔案。 此參數已在 Windows Server 2008 R2 中新增。
/compress 在檔案傳輸期間要求網路壓縮。如果適用的話。
/[-]sparse 啟用或停用在複製程序期間保留檔案的疏鬆狀態。 如果同時指定這兩個參數,則 /-sparse 會覆寫 /sparse
/noclone 請勿嘗試區塊複製作為最佳化。
/? 在命令提示字元顯示說明。

Remarks

  • Using /z

    如果您在複製階段遺失連線(例如,如果伺服器離線,則會在重新建立連線之後繼續。 /z 也會顯示每個檔案已完成的複製作業百分比。

  • 在 COPYCMD 環境變數中使用 /y

    您可以在 COPYCMD 環境變數中使用 /y 。 您可以在命令列上使用 /-y 來覆寫此命令。 根據預設,系統會提示您覆寫。

  • 複製加密的檔案

    將加密的檔案複製到不支援 EFS 的磁碟區會導致錯誤。 先解密檔案,或將檔案複製到支援 EFS 的磁碟區。

  • Appending files

    若要附加檔案,請為目的地指定單一檔案,但來源有多個檔案(也就是使用通配符或 file1+file2+file3 格式)。

  • 目的地的預設值

    如果您省略 目的地xcopy 則指令會將檔案複製到目前目錄。

  • 指定 目的地 是檔案還是目錄

    如果 目的地 不包含現有目錄,且未以反斜線 () 結尾,則會出現下列訊息:

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

    如果您想要將檔案或檔案複製到檔案,請按 F 鍵。 如果您想要將檔案或檔案複製到目錄,請按 D 鍵。

    您可以使用 /i 指令行選項來隱藏此訊息, xcopy 如果來源是多個檔案或目錄,則會導致假設目的地是目錄。

  • 使用指令設定xcopy目的地檔案的保存屬性

    命令 xcopy 會建立封存屬性集的檔案,不論此屬性是否在原始程式檔中設定。 如需檔案屬性和 屬性的相關資訊,請參閱 相關連結

  • 比較 xcopydiskcopy

    如果您的磁碟包含子目錄中的檔案,而且您要將它複製到具有不同格式的磁碟,請使用 xcopy 命令,而不是 diskcopydiskcopy因為命令會依追蹤複製磁碟,您的來源和目的地磁碟必須具有相同的格式。 命令 xcopy 沒有這項需求。 除非您需要完整的磁碟映像複本,否則請使用 xcopy

  • 記憶體不足錯誤

    執行 xcopy 以複製檔名路徑大於 255 個字元的檔案或資料夾時,可能會發生「記憶體不足」錯誤。

  • 的結束代碼 xcopy

    若要處理 所傳回xcopy的結束碼,請在批次程式的 if 指令行上使用 ErrorLevel 參數。 如需使用 if 處理結束碼的批次程式範例,請參閱 相關連結。 下表列出每個結束代碼和描述。

    Exit code Description
    0 檔案已複製而未發生錯誤。
    1 找不到要複製的檔案。
    2 使用者按下 CTRL+C 以終止 xcopy
    4 發生初始化錯誤。 記憶體或磁碟空間不足,或您在命令行上輸入無效的磁碟驅動器名稱或語法無效。
    5 發生磁碟寫入錯誤。

Examples

1. 若要將所有檔案和子目錄 (包括任何空子目錄) 從磁碟機 A 複製到磁碟機 B,請鍵入:

xcopy a: b: /s /e

2. 欲在上一個範例中包含任何系統或隱藏檔案,請新增 /h 命令列選項,如下所示:

xcopy a: b: /s /e /h

3. 欲將 \Reports 目錄中的檔案更新為 \Rawdata 目錄中自 1993 年 12 月 29 日以來已變更的檔案,請鍵入:

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

4. 欲更新上一個範例中 \Reports 中存在的所有檔案 (無論日期為何),請鍵入:

xcopy \rawdata \reports /u

5. 若要取得上一個指令要複製的檔案清單 (即,不實際複製檔案),請鍵入:

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

xcopy.out 檔案會列出要複製的每個檔案。

6. 若要將 \Customer 目錄和所有子目錄複製到網路磁碟機 H: 上的目錄 \\Public\Address,保留唯讀屬性,並在 H: 上建立新檔案時出現提示,請鍵入:

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

7. 若要發出上一個命令,請確定建立 xcopy \Address 目錄 (如果該目錄不存在),並隱藏建立新目錄時出現的訊息,請新增 /i 命令列選項,如下所示:

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

8、 可以建立批次程式來執行 xcopy 操作,如果發生錯誤,可以使用batch 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:

命令解譯器會取代 %1的 C :\Prgmcode,並取代 %2B:,然後搭配 xcopy/e/s 命令列選項使用。 如果發現錯誤,批 xcopy 次程式會讀取結束碼,並移至適當 IF ERRORLEVEL 陳述式中指出的標籤,然後顯示適當的訊息並結束批次程式。

9. 此範例會複製所有非空白目錄,以及星號後面具有相關副檔名的檔案。

xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem  .\d1\toc.yml
rem  .\d1\d12\toc.yml
rem  .\d2\toc.yml
rem  3 File(s) copied

在上述範例中,此特定來源參數值 .\toc*.yml 會複製相同的 3 個檔案,即使已移除其兩個路徑字元 .\ 也一樣。 不過,如果從來源參數中移除星號萬用字元,則不會複製任何檔案,使其只有 .\toc.yml