HOWTO · Batch
在批處理中 XCOPY 覆蓋
本教學講解如何在批處理中使用 XCOPY 覆蓋現有檔案,包括如何無提示地覆蓋所有檔案。
本頁內容
Xcopy 是一個命令列公用程式,用於將一個或多個檔案或目錄(包括子目錄)從一個位置複製到另一個位置。它與 copy 命令類似,但功能更強大,因為它可以將整個目錄從一個位置複製到另一個位置。
它功能強大,甚至可以複製磁碟機。Xcopy 是一個快速命令,可以複製檔案和資料夾、帶提示或不帶提示地覆蓋現有檔案、根據名稱、路徑或副檔名排除檔案、識別已更新的檔案等。
從 Windows 98 開始,幾乎所有 Windows 版本都支援它。它可以作為 DOS 命令在 MS-DOS 中使用 xcopy。
xcopy 命令的語法是:
xcopy source [destination] [switches]
source- 要複製的檔案的位置和名稱。它必須包括檔案或目錄的磁碟機和路徑。destination- 要複製的檔案的目標。它可以是磁碟機、目錄或檔案名稱。switches-xcopy命令提供的選項。可以透過在命令提示字元視窗中執行xcopy /?來查看它們。
還有其他幾個與 xcopy 類似的命令,有些甚至比它更強大,例如 robocopy、rsync、teracopy 等。但是,我們在本文中將堅持使用 xcopy。
本教學將講解在使用 xcopy 命令複製檔案時,如何在不提示的情況下覆蓋目標中的所有檔案。
在批處理中將檔案複製到新資料夾
要將檔案從一個位置複製到另一個位置,請執行以下命令。
xcopy C:\testfolder D:\testfolder /i /s
/s- 複製要複製的資料夾中的目錄、子目錄和檔案,除非它們為空。/i- 強制xcopy假定目標是一個目錄,並建立一個新目錄。如果不使用它,系統會提示你輸入目標是檔案還是目錄。
要僅複製目錄樹而不複製檔案,即目錄結構,請執行以下命令。
xcopy C:\testfolder D:\testfolder /t /e
/t- 複製目錄結構,不包括檔案。/e- 複製所有子目錄,即使它們是空的。它與/t和/s選項一起使用。
輸出:
如上所示,僅複製了目錄,而沒有複製檔案。
在批處理中透過覆蓋現有檔案來複製檔案
要在複製時覆蓋現有檔案,請執行以下命令。
xcopy C:\testfolder D:\testfolder /i /s
當目標中已經包含同名檔案時,xcopy 會停下來詢問如何處理該檔案:
Overwrite D:\testfolder\MyFile.txt (Yes/No/All)?
如上圖所示,它正在詢問是覆蓋現有檔案還是所有檔案。回答 All 會將覆蓋應用於其餘每個檔案。當我們將許多檔案複製到現有檔案上而不回答 All 時,它將為每個同名檔案顯示一個提示。
為每個檔案確認這一點太耗時了。為了避免這種情況,我們需要將 /y 選項與上述命令一起使用。
在批處理中無提示地覆蓋所有檔案來複製檔案
執行以下命令,在不提示覆蓋現有檔案的情況下複製檔案。
xcopy C:\testfolder D:\testfolder /i /s /y
/y - 不顯示確認是否覆蓋目標中現有檔案的提示,因此每個現有檔案都會被自動覆蓋。
在批處理中透過網路複製檔案
xcopy C:\Videos "\\server\media\videos" /s /i /z /w
/s- 複製要複製的資料夾中的目錄、子目錄和檔案,除非它們為空。/i- 強制xcopy假定目標是一個目錄,並建立一個新目錄。如果不使用它,系統會提示你輸入目標是檔案還是目錄。/z- 以可重新啟動模式透過網路複製檔案,即,如果在複製某個檔案時連線遺失,則在連線恢復時該檔案的複製將繼續。它還顯示完成百分比。/w- 顯示訊息Press any key to begin copying file(s),並在複製過程開始之前等待你的回應。
因此,我們討論了如何在複製許多檔案時不顯示提示就覆蓋所有現有檔案,即在不為每個檔案顯示提示的情況下覆蓋所有檔案。
xcopy 命令還提供了許多其他選項;你可以透過在命令提示字元中執行 xcopy /? 來查看它們。請注意,Microsoft 已棄用 xcopy,並建議在目前 Windows 版本的新指令碼中使用 robocopy,但 xcopy 仍然可用,並在現有批處理檔案中廣泛使用。