/在xcopy中排除仅用于文件类型

问题描述:

我有一个批处理文件将文件从Visual Studio复制到我的Web文件夹。我想复制我的web项目中的所有文件,除* .cs文件外。我似乎无法得到这个工作:/在xcopy中排除仅用于文件类型

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

任何提示?当我尝试运行这个时,我只是得到退出代码4。

/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

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

在我而言,我不得不从第二行开始排除扩展名列表,因为XCOPY忽略了第一道防线。

若要排除多个文件类型,可以使用'+'连接其他列表。例如:

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

来源:http://www.tech-recipes.com/rx/2682/xcopy_command_using_the_exclude_flag/