xcopy

xcopy

XCOPY是COPY的擴展,可以把指定的目錄連檔案和目錄結構一併拷貝,但不能拷貝系統檔案;使用時源盤符、源目標路徑名、源檔案名稱至少指定一個;選用/S時對源目錄下及其子目錄下的所有檔案進行COPY。除非指定/E參數,否則/S不會拷貝空目錄,若不指定/S參數,則XCOPY只拷貝源目錄本身的檔案,而不涉及其下的子目錄;選用/V參數時,對拷貝的扇區都進行較驗,但速度會降低。

基本介紹

  • 中文名:複製檔案和目錄樹
  • 外文名:xcopy
  • DOS命令:COPY的擴展,複製檔案和目錄樹
  • 作用:複製檔案、目錄樹及目錄下檔案
微軟自帶解釋,語法,參數,注釋,退出碼,範例,適用場合,精彩舉例,精彩舉例一,精彩舉例二,精彩舉例三,精彩舉例四,精彩舉例五,注意問題,

微軟自帶解釋

這是來自網上的經過表格整理的CMD自帶幫助:
XCOPY source [destination]
[/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
[/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
顯示要複製的檔案。
/G
允許將沒有經過加密的檔案複製到不支持加密的目標。
/H
也複製隱藏和系統檔案。
/R
覆蓋唯讀檔案。
/T
創建目錄結構,但不複製檔案。
不包括空目錄或子目錄。/T /E 包括
空目錄和子目錄。
/U
只複製已經存在於目標中的檔案。
/K
複製屬性。一般的 Xcopy 會重置唯讀屬性。
/N
用生成的短名複製。
/O
複製檔案所有權和 ACL 信息。
/X
複製檔案審核設定(隱含 /O)。
/Y
複製檔案審核設定(隱含 /O)。
現存目標檔案。
【就是直接覆蓋——Three~注】
/-Y
導致提示以確認改寫一個
現存目標檔案。
/Z
用重新啟動模式複製網路檔案。
命令行開關 /Y 可以預先在 COPYCMD 環境變數中設定。
這可能被命令行上的 /-Y 改寫。
/B 複製符號連結本身與連結目標相對。
/J 複製時不使用緩衝的 I/O。推薦複製大檔案時使用。

語法

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

參數

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 命令行選項。
/k 複製檔案,如果源檔案具有隻讀屬性,則在目標檔案中保留該屬性。默認情況下,xcopy 會刪除唯讀屬性。
/r 複製唯讀檔案
/h 複製具有隱藏和系統檔案屬性的檔案。默認情況下,xcopy 不複製隱藏或系統檔案。
/a 只複製那些具有存檔檔案屬性設定的源檔案。/a 不修改源檔案的存檔檔案屬性。
/m 複製具有存檔檔案屬性設定的源檔案。與 /a 不同,/m 關閉在源中指定的檔案的存檔檔案屬性。
/n 使用 NTFS 短檔案或目錄名創建副本。將檔案或目錄從 NTFS 卷複製到 FAT 卷或者當目標檔案系統需要 FAT 檔案系統命名約定(即 8.3 個字元)時,需要 /n。目標檔案系統可以是 FAT 或 NTFS。
/o 複製檔案所有權與自由選擇的訪問控制列表(DACL) 信息。
/x 複製檔案審核設定和系統訪問控制列表(SACL) 信息(包含 /o)。
/exclude:filename1 [+[filename2]] [+[filename3]]
指定包含字元串的檔案列表。
/y 禁止提示您確認要覆蓋現存的目標檔案
/-y 提示您確認要覆蓋現有目標檔案。
/z 在可重啟模式中通過網路複製。
/? 在命令提示符顯示幫助。
/t 只複製子目錄結構(即目錄樹),不複製檔案。要複製空目錄,必須包含 /e 命令行選項。

注釋

使用 /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 返回的退出碼,請在批處理程式的 if 命令行上使用 errorlevel 參數。有關使用“if”處理退出碼的批處理程式的範例,請參閱“”。下表列出每一個退出碼和說明。
退出碼 說明
0 檔案複製沒有錯誤。
1 沒有找到要複製的檔案。
2 用戶按 CTRL+C 終止了 xcopy。
4 出現了初始化錯誤。沒有足夠的記憶體或磁碟空間,或命令行上輸入了無效的驅動器名稱或語法。
5 出現了磁碟寫入錯誤。

範例

要從驅動器A 將所有檔案和子目錄(包括所有空的子目錄)複製到驅動器 B,請鍵入:
xcopy a:b: /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 語句中指示的標籤,然後顯示相應的訊息並退出批處理程式。

適用場合

在進行連同子目錄一起拷貝時很有用,在拷貝大量檔案時比COPY命令要快得多。

精彩舉例

精彩舉例一

1、如只是單純地複製 E:\ 盤上所有檔案到 D:\ 盤上,就輸入“ xcopy e:\*.* d: /s /h "就行!如果在複製過程中,你不要他複製檔案,那就按鍵盤熱鍵“Ctrl " +"Pause /break" 二個熱鍵 來中斷複製。

精彩舉例二

2、如果想把E:\ 盤上所有檔案複製到D:\盤上,分為今天複製一點,明天再接著複製一些,後天再接著複製一些、或者是某種原因上次沒有複製完成,今天想接著複製。(這種情況是經常在複製檔案中出現的)那可怎么辦才好呢?
那就輸入“ xcopy e:\*.* d: /s /h /d /y ”就行。他能查出哪些檔案是已經複製過去,哪些檔案還沒有複製過去的。

精彩舉例三

3、當然我們也會碰到這種情況,一些檔案我們已經修改過、網上面又有最新版本的。原來備份的那份檔案我們要及時更新的時候。那怎么才能同步更新呢?當然我們可以把最新的好份檔案複製過去,這也是一種解決辦法。
如果修改的檔案有很多的,自己到時候也記不清楚那份檔案是更新過的。這么多的原來備份的那份檔案都要更新,都要複製過去,可不是件省力氣的活,而且容易出錯和一些檔案被忘記!
那和上面一樣也同樣輸入" xcopy e:\*.* d: /s /h /d /y "就行!
比如你想拷貝一些檔案到另一個檔案下,但是涉及到只想拷貝更新後的檔案,之前的不要
例句:xcopy d:\1檔案\. d:\2檔案/s /e/d:02-13-2011 那么後面的日期代表 只拷貝2011年 2月13日之後更新的檔案,並且以此日期為參考,之後都只拷貝新檔案。

精彩舉例四

4、還有一種情況我們經常也碰到的,因為複製某個檔案出錯或者這個檔案在使用中,而停止了複製工作,(比如,複製C 盤上的 windows xp )我們這時候想跳過某個出錯的檔案和某個正在使用中檔案而繼續複製其他檔案。
再多加入一個參數" /c "就是 " xcopy e:\*.* d: /s /h /d /c /y "就行!

精彩舉例五

5、有時候我們想XCOPY 變為自動複製,並且複製完成後關閉電腦,可以建立一個批處理檔案,新建文本文檔,更名為XCOPY.BAT 當然擴展名原來是TXT 格式的要更名為BAT 在這個 XCOPY.BAT 中輸入
xcopy e:\*.* d: /s /h /c /y
shutdown -s
然後雙擊xcopy.bat運行它,你這時候可以出去玩啦。電腦會自己複製備份完成檔案然後自動關閉電腦。

注意問題

下面就我遇到的一個例子說兩個初學者容易遇到的問題。
1.我想用.bat批處理來運行複製 我的QQ 個人信息資料夾的內容到D 盤。只要雙擊一下就可以了。
於是我就開始寫xcopy的命令,做了很久都沒有成功,後來發現是,我的批處理檔案名稱是xcopy.bat,
所以特別提醒大家批處理的檔案名稱不能是一個命令。。。
然後,我的代碼
“xcopy C:\Program Files\Tencent\QQ\我的QQ號 d:\我的QQ號 /e /h /d /y /r /v /f /k
pause”
提示錯誤,
原因是批處理裡面的檔案路徑不能有“空格”,“Program Files”就有了一個空格,而且字元長度不支持大於8個字元的檔案或者資料夾名。解決方法是用用"路徑",如下
2.這樣就可以複製了。但是還有個問題,就是開始複製的時候,提示“請你選擇“我的QQ號”的檔案類型,(F,檔案/D,目錄)需要選擇D 才可以。
原來xcopy 有合併和生成檔案的功能,系統不知道你是需要資料夾還是檔案,在產生分歧的時候就詢問。不過這樣對我們很麻煩。
解決方法:只要在目標檔案夾後面加上\就可以了,例如:
“xcopy C:\Progra~1\Tencent\QQ\我的Q~1d:\我的QQ號\ /e /h /d /y /r /v /f /k
pause“
注意的d:\我的QQ號\ 這裡有個斜槓

相關詞條

熱門詞條

聯絡我們