File 如何限制xcopy排除列表的文件匹配

File 如何限制xcopy排除列表的文件匹配,file,xcopy,File,Xcopy,我遇到了一个问题,xcopy匹配了我不希望它匹配的文件名。。。有些文件名中的模式与我试图排除的文件扩展名相匹配。不幸的是,xcopy只是匹配模式 “我的排除文件”配置为排除.xml文件,但源目录包含两个项目输出(Acme.xml.dll和Acme.xml.Providers.dll),它们被过滤器捕获并排除 我们使用的复制脚本对于我们处理的所有项目来说都是一个通用脚本,所以我真的不想只对这两个项目进行“一次性”修改。我还想继续使用一个解决方案,该解决方案涉及一个文件排除列表。此脚本在30+VS.

我遇到了一个问题,xcopy匹配了我不希望它匹配的文件名。。。有些文件名中的模式与我试图排除的文件扩展名相匹配。不幸的是,xcopy只是匹配模式

“我的排除文件”配置为排除
.xml
文件,但源目录包含两个项目输出(
Acme.xml.dll
Acme.xml.Providers.dll
),它们被过滤器捕获并排除

我们使用的复制脚本对于我们处理的所有项目来说都是一个通用脚本,所以我真的不想只对这两个项目进行“一次性”修改。我还想继续使用一个解决方案,该解决方案涉及一个文件排除列表。此脚本在30+VS.NET项目的构建事件中配置,因此在需求更改时更新文件比修改所有项目容易得多

XCOPY命令: BuildExclutionList_Release.txt的内容
我在网上挖了几个小时才回答了这个问题。事实证明,只需在排除列表中的项后面加上反斜杠
\
,即可将其匹配限制在路径名之外的文件名末尾

我假设斜杠只应用于文件夹,但xcopy也将其应用于文件名。使用
.xml\
,允许我排除
Acme.xml.xml
(xml文档),但不排除
Acme.xml.dll
(项目输出)

更新的BuildExclutionList_Release.txt 项目构建输出
 xcopy "C:\MNT\Dev\SRC\Acme\TestProject\bin\Release\*.*" "C:\MNT\Dev\Acme\ClassLibraries\AnyCPU\Release" /I /Y /EXCLUDE:C:\MNT\Dev\BuildExclusionList_Release.txt
.tmp
DAL_GENERATED_FLAG.TXT
.xml
.tmp\
DAL_GENERATED_FLAG.TXT
.xml\
Acme.XML -> C:\MNT\Dev\SRC\Acme\XML\bin\Release\Acme.XML.dll
xcopy "C:\MNT\Dev\SRC\Acme\XML\bin\Release\*.*" "C:\MNT\Dev\Acme\ClassLibraries\AnyCPU\Release" /I /Y /EXCLUDE:C:\MNT\Dev\Acme\BuildExclusionList_Release.txt
C:\MNT\Dev\SRC\Acme\XML\bin\Release\Acme.Common.dll
C:\MNT\Dev\SRC\Acme\XML\bin\Release\Acme.Logging.dll
C:\MNT\Dev\SRC\Acme\XML\bin\Release\Acme.XML.dll
C:\MNT\Dev\SRC\Acme\XML\bin\Release\Acme.Math.dll
4 File(s) copied
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========