使用 XCOPY 正確擴充複製的檔名

使用 XCOPY 正確擴充複製的檔名

我製作了一個批次腳本,設定.cpp為從我設定的位置複製所有檔案。它可以複製文件保留資料夾結構,但它沒有正確擴展複製的檔案名稱。我也有一個舊版本可以做到這一點,但它也複製一切從目標資料夾到新資料夾。新版本的目標是僅有的複製特定文件類型。

XCOPY以下是使用正確擴展檔案名稱但複製所有資料夾內容的語法:

ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" /S /Q /N

以下是無法擴展複製檔案類型的檔案名稱的新語法:

ECHO F | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects\*.cpp" "Backup\Projects\" /S /Q /N

以下是我在目標目錄中獲得的縮寫/未擴展檔名的範例:

WRNM~1.CPP

不知道提示覆蓋指令是否切換( /S /Q /N)正在影響這一點,但由於要複製的文件數量龐大,我需要它們覆蓋提示。我還想指出,儘管使用較新的語法複製文件,但XCOPY即使我使用開關將目標定義為目錄,我仍然可以複製它們D

答案1

我找到了滿足我所有要求的解決方案,ROBOCOPY而是使用:

ROBOCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" *.cpp /S

如果需要,您可以附加/E開關來複製空資料夾。我以前嘗試過這個,但我放錯了文件類型定義。

進一步的ROBOCOPY文檔來自SS64:

https://ss64.com/nt/robocopy.html

答案2

Microsoft 文件上的 xcopy

使用 NTFS 短檔案或目錄名稱建立副本。當您將檔案或目錄從 NTFS 磁碟區複製到 FAT 磁碟區時,或當目標檔案系統上需要 FAT 檔案系統命名約定(即 8.3 個字元)時,需要 /n。目標檔案系統可以是 FAT 或 NTFS。

您的舊版 xcopy 無法/n正常處理。xcopy /?每當選項改變其含義時,請逐一檢查。

相關內容