xcopy 複製文件和目錄樹

 xcopy
  複製文件和目錄樹。
  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 指定新文件的位置和/或名稱。
  /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)。
  現存目標文件。
  /-Y 導致提示以確認改寫一個
  現存目標文件。
  /Z 用重新啓動模式複製網絡文件。
  命令行開關 /Y 可以預先在 COPYCMD 環境變量中設置。
  這可能被命令行上的 /-Y 改寫。
  

編輯本段語法

  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 的退出碼
  要處理 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 語句中指示的標籤,然後顯示相應的消息並退出批處理程序。
  

編輯本段適用場合

  在進行連同子目錄一起拷貝時很有用,在拷貝大量文件時比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 "就行啦!
  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 運行它,你這時候可以出去玩啦。電腦會自己複製備份完成文件然後自動關閉電腦。
  ================================================================
  -----------------------------------以下-由 icebat -冰蝠-提供---------------------------------
  ================================================================
  下面就我遇到的一個例子說兩個初學者容易遇到的問題。
  1.我想用.bat 批處理 來運行復制 我的QQ 個人信息文件夾的內容到D 盤。只要雙擊一下就可以了。
  於是我就開始寫xcopy的命令,做了很久都沒有成功,後來發現是,我的批處理文件名是xcopy.bat ,
  所以特別提醒大家批處理的文件名不能是一個命令。。。
  然後,我的代碼
  =========================================
  xcopy C:/Program Files/Tencent/QQ/316355*** d:/316355*** /e /h /d /y /r /v /f /k
  pause
  =========================================
  提示錯誤,
  原因是 批處理裏面的文件路徑不能有“空格”,“Program Files”就有了一個空格,而且字符長度不支持大於8個字符的文件或者文件夾名。解決方法是用8.3短文件名代替。前面留下6個字符,然後加上~1 ,剛好八個字符,就可以了。如下
  ================================
  xcopy C:/Progra~1/Tencent/QQ/316355~1d:/316355*** /e /h /d /y /r /v /f /k
  pause
  ================================
  2.這樣就可以複製了。但是還有個問題,就是開始複製的時候,提示“請你選擇316355***的文件類型,(F,文件/D,目錄)需要選擇D 纔可以。
  原來xcopy 有合併和生成文件的功能,系統不知道你是需要文件夾還是文件,在產生分歧的時候就詢問。不過這樣對我們很麻煩。
  解決方法:只要在目標文件夾後面加上/就可以了,例如:
  ================================
  xcopy C:/Progra~1/Tencent/QQ/316355~1d:/316355***/ /e /h /d /y /r /v /f /k
  pause
  ================================注意的d:/316355***/ 這裏有個斜槓
  ============================================================
  ----------------------------^以上又-IceBat 冰蝠 添加 ^-----------------------
  ============================================================
發佈了30 篇原創文章 · 獲贊 5 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章