/只在一个文件types的xcopy中排除

我有一个batch file,将文件从Visual Studio复制到我的Web文件夹。 我想复制我的web项目中的所有文件,除* .cs文件外。 我似乎无法得到这个工作:

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

有小费吗? 当我尝试运行这个时,我只是得到退出代码4。

/EXCLUDE:参数需要一个包含排除文件列表的文件。

因此创build一个名为“excludedfileslist.txt”的文件,其中包含:

 .cs\ 

然后像这样的命令:

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

或者,您可以使用Robocopy ,但需要安装/复制robocopy.exe到机器。

更新

一个匿名评论编辑,简单地说“这个解决scheme也排除了css文件!”

这是真实的创build一个“excludedfileslist.txt文件只包含:

 .cs 

(注意在结尾没有反斜杠)

也将排除所有以下内容:

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

有时候人们不会阅读或理解XCOPY命令的帮助,下面是我想强调的一个项目:

使用/排除

  • 在每个文件中单独列出每个string。 如果任何列出的string与要复制的文件的绝对path的任何部分匹配 ,则该文件将从复制过程中排除。 例如,如果您指定string“\ Obj \”,则排除Obj目录下的所有文件。 如果指定string“.obj”,则排除扩展名为.obj的所有文件。

如示例所示,它排除all files with the .obj extension但并未声明它也排除名为file1.obj.tmpdir.obj.output\example2.txt文件或目录。

还有一种解决.css文件被排除在外的方法,将“excludedfileslist.txt”改为只包含:

 .cs\ 

(注意最后的反斜杠)。

这是一个完整的testing序列供您参考:

 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 

该testing在Windows 7命令行上完成,并在Windows 10“10.0.14393”上重新testing。

请注意,最后一个例子不包括.\src\dir2.cs\file5.txt ,它可能会或可能不会让您感到意外。

在我的情况下,我不得不从第二行开始排除扩展名列表,因为xcopy忽略了第一行。

在excludefileslist.txt中将* .cs更改为.cs

要排除多个文件types,可以使用“+”连接其他列表。 例如:

 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/