Post Build事件xcopy - 排除一些文件集

时间:2015-08-17 06:57:46

标签: batch-file xcopy post-build-event build-events

我想在成功编译项目后将一些文件复制到特定文件夹。我已经写了一个post build事件,如下所述:

xcopy "$(ProjectDir)bin" "$(TargetDir)..\..\Support Files\DBUpgradeUtility\" /Y

注意:我的项目的输出路径已设置为bin文件夹以进行调试,并释放两种模式。

上面提到的构建事件工作正常,bin文件夹下的所有文件都已复制到目标文件夹。但是随着所需的文件,'vshost.exe'文件也被复制,我不想要这个文件。所以,我使用了xcopy build事件的exclude参数,如下所述:

xcopy "$(ProjectDir)bin" "$(TargetDir)..\..\Support Files\DBUpgradeUtility\" /Y /exclude:$(TargetDir)..\..\Support Files\DBUpgradeUtility\*.vshost.exe

使用上面的构建事件,编译失败,错误是:

  

命令" xcopy" C:\ TFSWorkspace \ FASTER.Web -   v6.3.Sprint.06 \源\安装\应用程序\ DBUpgradeUtility \ BIN"   " C:\ TFSWorkspace \ FASTER.Web -   v6.3.Sprint.06 \来源\安装\应用\ DBUpgradeUtility \ BIN .... \支持   文件\ DBUpgradeUtility \" / Y /exclude:"C:\TFSWorkspace\FASTER.Web -   v6.3.Sprint.06 \来源\安装\应用\ DBUpgradeUtility \ BIN .... \支持   文件\ DBUpgradeUtility *。 vshost.exe"退出代码4。

我还使用googled for exclude参数,然后编写上面提到的构建事件。我找不到我在这里失踪的东西或我做错了什么。

请帮我解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

xcopy命令的commit()选项的工作方式不同 - 它允许您指定包含排除过滤器的文件:

  

指定文件列表。必须至少指定一个文件。每   文件将包含搜索字符串,每个字符串位于单独的行中   在文件中。

     

当任何字符串与绝对的任何部分匹配时   要复制的文件的路径,该文件将被取消   复制。例如,指定字符串/exclude\obj\将被排除   目录.obj下的所有文件或obj的所有文件   扩展

因此,您可以在项目中创建一个新文件(例如.obj)并添加以下行:

$(ProjectDir)excludes.txt

然后将xcopy命令中的选项更改为:

vshost.exe

这会排除绝对路径中包含/exclude:"$(ProjectDir)excludes.txt" 的所有文件。如果您必须排除其他文件,只需在文件中添加一个新行。