今天配置一個批處理命令的時候需要用到xcopy的exclude,也就是需要排除一些文件不需要拷貝。於是
在命令行中輸入:xcopy /? 可以查看xcopy 的幫助。主要用法如下所示:
C:/Documents and Settings/Administrator>xcopy /?
複製文件和目錄樹。
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/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 的命令幫助裏面,有一個exclude 參數。該參數的功能就是排除不必要的文件被拷貝。根據說明,使用的方法應該是
在“/EXCLUDE: ”後面直接輸入字符串進行匹配。例如:
xcopy c:/temp/*.* d:/temp/*.* /EXCLUDE:cs 排除所有包含mid 字符的文件或者目錄。
實際使用中發現,這樣根本上就沒法實現。返回信息如下:
------------------
無法讀取文件: cs
複製了 0 個文件
------------------
實際上,這個參數應該是一個文件。根據上面的提示也可以發現,它要去讀取文件名爲 cs 的文件。所以,建立一個文本文件,把所想要排除的文件對應的字符串,一一加上去。用回車來分割。比如:
------------------
.*.cs
.csproj
.vspscc
.config
/obj/
/Properties/
------------------