我製作了一個批次腳本,設定.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:
答案2
使用 NTFS 短檔案或目錄名稱建立副本。當您將檔案或目錄從 NTFS 磁碟區複製到 FAT 磁碟區時,或當目標檔案系統上需要 FAT 檔案系統命名約定(即 8.3 個字元)時,需要 /n。目標檔案系統可以是 FAT 或 NTFS。
您的舊版 xcopy 無法/n
正常處理。xcopy /?
每當選項改變其含義時,請逐一檢查。