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:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]
參數
參數 | 描述 |
---|---|
<來源> | 必要。 指定您要複製檔案的位置和名稱。 此參數必須包含磁碟機或路徑。 |
[<Destination>] | 指定您要複製檔案的目的地。 此參數可以包含磁碟機代號和冒號、目錄名稱、檔案名稱或這些內容的組合。 |
/w | 顯示下列訊息,並在開始複製檔案之前等候您的回應: 按任意鍵即可開始複製檔案 |
/p | 提示您確定是否要建立每個目的地檔案。 |
/c | 忽略錯誤。 |
/v | 驗證每個檔案都寫入目的地檔案,以確保目的地檔案與來源檔案相同。 |
/q | 隱藏顯示 xcopy 訊息。 |
/f | 複製時顯示來源和目的地檔案名稱。 |
/l | 產生要複製但不會主動複製檔案的檔案清單。 |
/g | 當目的地不支援加密時,建立解密的目的地檔案。 |
/d [:MM-DD-YYYY] | 只複製指定日期或之後變更的來源檔案。 如果您沒有包含 MM-DD-YYYY 值,xcopy 會複製比現有目的地檔案還新的所有來源檔案。 這個命令列選項可讓您更新已變更的檔案。 |
/u | 從只存在於目的地的來源複製檔案。 |
/i | 如果來源是目錄,或包含萬用字元且目的地不存在,則 xcopy 會假設目的地指定了目錄名稱並建立新的目錄。 然後,xcopy 會將所有指定的檔案複製到新的目錄中。 根據預設,xcopy 會提示您指定目的地是否為檔案或目錄。 |
/s | 除非目錄是空的,否則會複製目錄和子目錄。 如果您省略 /s,xcopy 可在單一目錄中運作。 |
/e | 複製所有子目錄,即使這些子目錄是空的。 搭配 /s 和 /t 命令列選項使用 /e。 |
/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 | 請勿嘗試區塊複製作為最佳化。 |
/? | 在命令提示字元顯示說明。 |
備註
使用 /z
如果您在複製階段遺失連線 (例如,如果伺服器離線),則會在重新建立連線之後繼續。 /z 也會顯示每個檔案完成的複製作業百分比。
在 COPYCMD 環境變數中使用 /y。
您可以在 COPYCMD 環境變數中使用 /y。 您可以在命令列上使用 /-y 覆寫此命令。 根據預設,系統會提示您覆寫。
複製加密的檔案
將加密的檔案複製到不支援 EFS 的磁碟區會導致錯誤。 先解密檔案,或將檔案複製到支援 EFS 的磁碟區。
附加檔案
若要附加檔案,請為目的地指定單一檔案,但來源有多個檔案 (也就是使用通配符或 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
命令會建立封存屬性集的檔案,不論是否在來源檔案中設定此屬性。 如需檔案屬性和 attrib 的詳細資訊,請參閱 相關連結。比較
xcopy
和diskcopy
如果您的磁碟機包含子目錄中的檔案,而且您想要將它複製到具有不同格式的磁碟機,請使用
xcopy
命令,而不是diskcopy
。 因為diskcopy
命令會依照每條軌道複製磁碟機,而您的來源和目的地磁碟機格式必須相同。xcopy
命令並沒有此要求。 除非您需要完整的磁碟機映像複本,否則請使用xcopy
。記憶體不足錯誤
如果執行
xcopy
以複製檔案名稱路徑超過 255 個字元的檔案或資料夾時,可能會發生「記憶體不足」錯誤。xcopy
的結束代碼若要處理
xcopy
所傳回的結束代碼,請在批次程式中的 if 命令列上使用 ErrorLevel 參數。 如需使用 if 處理結束代碼的批次程式範例,請參閱相關連結。 下列資料表列出每個結束代碼及其描述。結束代碼 描述 0 檔案已複製而未發生錯誤。 1 找不到要複製的檔案。 2 使用者按下 CTRL+C 以終止 xcopy
。4 發生初始化錯誤。 記憶體或磁碟機空間不足,或您在命令列上輸入無效的磁碟機名稱或語法無效。 5 磁碟寫入發生錯誤。
範例
1. 若要將所有檔案和子目錄 (包括任何空白子目錄) 從磁碟機 A 複製到磁碟機 B,請輸入:
xcopy a: b: /s /e
2. 若要在上一個範例中包含任何系統或隱藏檔案,請增加 /h 命令列選項,如下所示:
xcopy a: b: /s /e /h
3. 若要使用自 1993 年 12 月 29 日起變更 \Rawdata 目錄中的檔案更新 \Reports 目錄中的檔案,請輸入:
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
作業,並在發生錯誤時使用批次 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 陳述式中所指示的標籤,然後顯示適當的訊息並結束批次程式。
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。