HOWTO · Batch

在批處理中 XCOPY 覆蓋

本教學講解如何在批處理中使用 XCOPY 覆蓋現有檔案,包括如何無提示地覆蓋所有檔案。

本頁內容

Xcopy 是一個命令列公用程式,用於將一個或多個檔案或目錄(包括子目錄)從一個位置複製到另一個位置。它與 copy 命令類似,但功能更強大,因為它可以將整個目錄從一個位置複製到另一個位置。

它功能強大,甚至可以複製磁碟機。Xcopy 是一個快速命令,可以複製檔案和資料夾、帶提示或不帶提示地覆蓋現有檔案、根據名稱、路徑或副檔名排除檔案、識別已更新的檔案等。

從 Windows 98 開始,幾乎所有 Windows 版本都支援它。它可以作為 DOS 命令在 MS-DOS 中使用 xcopy。

xcopy 命令的語法是:

xcopy source [destination] [switches]
  1. source - 要複製的檔案的位置和名稱。它必須包括檔案或目錄的磁碟機和路徑。
  2. destination - 要複製的檔案的目標。它可以是磁碟機、目錄或檔案名稱。
  3. switches - xcopy 命令提供的選項。可以透過在命令提示字元視窗中執行 xcopy /? 來查看它們。

還有其他幾個與 xcopy 類似的命令,有些甚至比它更強大,例如 robocopy、rsync、teracopy 等。但是,我們在本文中將堅持使用 xcopy。

本教學將講解在使用 xcopy 命令複製檔案時,如何在不提示的情況下覆蓋目標中的所有檔案。

在批處理中將檔案複製到新資料夾

要將檔案從一個位置複製到另一個位置,請執行以下命令。

xcopy C:\testfolder D:\testfolder /i /s

copy files using xcopy command

  1. /s - 複製要複製的資料夾中的目錄、子目錄和檔案,除非它們為空。
  2. /i - 強制 xcopy 假定目標是一個目錄,並建立一個新目錄。如果不使用它,系統會提示你輸入目標是檔案還是目錄。

要僅複製目錄樹而不複製檔案,即目錄結構,請執行以下命令。

xcopy C:\testfolder D:\testfolder /t /e

copy directories using xcopy command

  1. /t - 複製目錄結構,不包括檔案。
  2. /e - 複製所有子目錄,即使它們是空的。它與 /t 和 /s 選項一起使用。

輸出:

copy directories using xcopy command(output)

如上所示,僅複製了目錄,而沒有複製檔案。

在批處理中透過覆蓋現有檔案來複製檔案

要在複製時覆蓋現有檔案,請執行以下命令。

xcopy C:\testfolder D:\testfolder /i /s

overwrite existing files(with prompt)

當目標中已經包含同名檔案時,xcopy 會停下來詢問如何處理該檔案:

Overwrite D:\testfolder\MyFile.txt (Yes/No/All)?

如上圖所示,它正在詢問是覆蓋現有檔案還是所有檔案。回答 All 會將覆蓋應用於其餘每個檔案。當我們將許多檔案複製到現有檔案上而不回答 All 時,它將為每個同名檔案顯示一個提示。

為每個檔案確認這一點太耗時了。為了避免這種情況,我們需要將 /y 選項與上述命令一起使用。

在批處理中無提示地覆蓋所有檔案來複製檔案

執行以下命令,在不提示覆蓋現有檔案的情況下複製檔案。

xcopy C:\testfolder D:\testfolder /i /s /y

overwrite existing files(without prompt)

/y - 不顯示確認是否覆蓋目標中現有檔案的提示,因此每個現有檔案都會被自動覆蓋。

在批處理中透過網路複製檔案

xcopy C:\Videos "\\server\media\videos" /s /i /z /w
  1. /s - 複製要複製的資料夾中的目錄、子目錄和檔案,除非它們為空。
  2. /i - 強制 xcopy 假定目標是一個目錄,並建立一個新目錄。如果不使用它,系統會提示你輸入目標是檔案還是目錄。
  3. /z - 以可重新啟動模式透過網路複製檔案,即,如果在複製某個檔案時連線遺失,則在連線恢復時該檔案的複製將繼續。它還顯示完成百分比。
  4. /w - 顯示訊息 Press any key to begin copying file(s),並在複製過程開始之前等待你的回應。

因此,我們討論了如何在複製許多檔案時不顯示提示就覆蓋所有現有檔案,即在不為每個檔案顯示提示的情況下覆蓋所有檔案。

xcopy 命令還提供了許多其他選項;你可以透過在命令提示字元中執行 xcopy /? 來查看它們。請注意,Microsoft 已棄用 xcopy,並建議在目前 Windows 版本的新指令碼中使用 robocopy,但 xcopy 仍然可用,並在現有批處理檔案中廣泛使用。