2010-11-23 63 views
52

我有一個批處理文件將文件從Visual Studio複製到我的Web文件夾。我想複製我的web項目中的所有文件,除* .cs文件外。我似乎無法得到這個工作:/在xcopy中排除僅用於文件類型

xcopy /r /d /i /s /y /exclude:".cs" C:\dev\apan C:\web\apan 

任何提示?當我嘗試運行這個時,我只是得到退出代碼4。

回答

95

/EXCLUDE:參數期望包含排除文件列表的文件。

所以創建一個名爲 「excludedfileslist.txt」 含AA文件:

.cs\ 

那麼這樣的命令:

xcopy /r /d /i /s /y /exclude:excludedfileslist.txt C:\dev\apan C:\web\apan 

另外,您可以使用Robocopy,但需要安裝/複製robocopy.exe到機器。

更新

匿名評論編輯,只是說明「該解決方案還排除CSS文件!」

這是真正的創造了「excludedfileslist.txt文件僅包含:

.cs 

(注意最後沒有反斜線)

也將排除以下所有條件:

  • file1.cs
  • file2.css
  • dir1.cs\file3.txt
  • dir2\anyfile.cs.something.txt

有時候人不閱讀或理解XCOPY命令的幫助下,這是一個項目,我想強調:

使用/排除

  • 在每個文件的單獨行中列出每個字符串。如果列出的任何字符串與要複製文件的絕對路徑的任何部分相匹配,則該文件將從複製過程中排除。例如,如果您指定字符串「\ Obj \」,則會排除Obj目錄下的所有文件。如果指定字符串「.obj」,則排除擴展名爲.obj的所有文件。

作爲例子指出它排除all files with the .obj extension但並不說明它也排除文件或命名file1.obj.tmpdir.obj.output\example2.txt目錄。

還有一種方法,排除.css文件也被排除,更改「excludedfileslist。TXT」到只包含:

.cs\ 

(注意末尾的反斜線)

這裏是供您參考完整的測試序列:

C:\test1>ver 

Microsoft Windows [Version 6.1.7601] 

C:\test1>md src 
C:\test1>md dst 
C:\test1>md src\dir1 
C:\test1>md src\dir2.cs 
C:\test1>echo "file contents" > src\file1.cs 
C:\test1>echo "file contents" > src\file2.css 
C:\test1>echo "file contents" > src\dir1\file3.txt 
C:\test1>echo "file contents" > src\dir1\file4.cs.txt 
C:\test1>echo "file contents" > src\dir2.cs\file5.txt 

C:\test1>xcopy /r /i /s /y .\src .\dst 
.\src\file1.cs 
.\src\file2.css 
.\src\dir1\file3.txt 
.\src\dir1\file4.cs.txt 
.\src\dir2.cs\file5.txt 
5 File(s) copied 

C:\test1>echo .cs > excludedfileslist.txt 
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst 
.\src\dir1\file3.txt 
1 File(s) copied 

C:\test1>echo .cs\ > excludedfileslist.txt 
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst 
.\src\file2.css 
.\src\dir1\file3.txt 
.\src\dir1\file4.cs.txt 
3 File(s) copied 

這個測試是在Windows完成7命令行並在Windows 10「10.0.14393」上重新測試。

請注意,最後一個示例不包括.\src\dir2.cs\file5.txt,它可能會或可能不會讓您感到意外

+0

哦,這是一個有點不方便,因爲我想這個分配給我的整個開發團隊。有沒有解決這個問題的方法? – 2010-11-23 02:33:10

+1

更新了包含robocopy備選方案的答案。 – 2010-11-23 02:40:14

+8

好吧,我明白了!我可以在批處理文件的開頭創建文件:echo .cs> C:\ nocs.txt – 2010-11-23 02:40:30

5

更改*的.cs到的.cs在excludefileslist.txt

7

在我而言,我不得不從第二行開始排除擴展名列表,因爲XCOPY忽略了第一道防線。