我遇到了一个问题,即 xcopy 匹配了我没想到它会匹配的文件名...... 某些文件名中的模式与我尝试排除的文件扩展名匹配。 不幸的是,xcopy只是匹配模式...
我的排除文件配置为排除.xml
文件,但源目录包含两个项目输出(Acme.XML.dll
和Acme.XML.Providers.dll
),它们被过滤器捕获并排除。
我们使用的复制脚本是我们使用的所有项目的通用脚本,所以我真的不想只对这两个项目进行"一次性"修改。 我还想继续使用涉及排除项文件列表的解决方案。 此脚本是在 30+ 个 VS.NET 项目的构建事件中配置的,因此在需求更改时更新文件比修改所有项目要容易得多......
XCOPY 命令:
xcopy "C:MNTDevSRCAcmeTestProjectbinRelease*.*" "C:MNTDevAcmeClassLibrariesAnyCPURelease" /I /Y /EXCLUDE:C:MNTDevBuildExclusionList_Release.txt
BuildExclusionList_Release.txt的内容
.tmp
DAL_GENERATED_FLAG.TXT
.xml
经过几个小时的网上挖掘,我能够回答这个问题。 事实证明,只需将反斜杠附加到排除列表中的项目,就会将其匹配限制为文件名的末尾,以及路径名。
我假设斜杠仅适用于文件夹,但 xcopy 也将它们应用于文件名。 使用 .xml
,允许我排除Acme.XML.xml
(XML 文档),但不能排除Acme.XML.dll
(项目输出)
更新BuildExclusionList_Release.txt
.tmp
DAL_GENERATED_FLAG.TXT
.xml
项目生成输出
Acme.XML -> C:MNTDevSRCAcmeXMLbinReleaseAcme.XML.dll
xcopy "C:MNTDevSRCAcmeXMLbinRelease*.*" "C:MNTDevAcmeClassLibrariesAnyCPURelease" /I /Y /EXCLUDE:C:MNTDevAcmeBuildExclusionList_Release.txt
C:MNTDevSRCAcmeXMLbinReleaseAcme.Common.dll
C:MNTDevSRCAcmeXMLbinReleaseAcme.Logging.dll
C:MNTDevSRCAcmeXMLbinReleaseAcme.XML.dll
C:MNTDevSRCAcmeXMLbinReleaseAcme.Math.dll
4 File(s) copied
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========