在 xcopy 中排除一个文件类型

我有一个批处理文件要从 VisualStudio 复制文件到我的 Web 文件夹。我想复制我的网络项目中的所有文件,除了 * 。Cs 文件。我似乎不能让这个起作用:

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

- 有什么建议吗?-我试着运行的时候,出口代码是4。

160762 次浏览

/EXCLUDE:参数期望包含排除的文件列表的文件。

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

.cs\

然后是这样的命令:

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

或者,您可以使用 机械影印机,但是需要将 robocopy.exe安装/复制到计算机。

更新

一个匿名评论编辑,它只是简单地说“这个解决方案也排除 css 文件!”

这是正确的创建一个 excludedfileslist.txt文件只包含:

.cs

(注意结尾没有反斜杠)

也将排除以下所有因素:

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

有时候人们读不懂或者不理解 XCOPY 命令的帮助,下面是我想强调的一点:

使用/排除

  • 在每个文件的单独一行中列出每个字符串。如果要复制的文件的绝对路径中有任何列出的 字符串匹配任何部分,则该文件将被排除在复制过程之外。例如,如果指定字符串“ Obj”,则排除 Obj 目录下的所有文件。如果您指定了字符串”。属性排除所有文件。Obj 扩展。

如示例所述,它排除了“所有具有。“ obj 扩展名”,但没有说明它也排除名为 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,这对您来说可能是意外的,也可能不是意外的。

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

在我的例子中,由于 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/