我正在尝试复制特定目录,保存目录结构,但无法找到在%(RecursiveDir)中包含特定子目录的方法
一个解决方案是使用更一般的捕获.\**\Dir1\**\*.*
,但这可能会捕获一些不相关的东西,例如Level1 \ Dir1,这对我的任务来说是不正确的。
目前,我必须使用全包**\*.*
,然后从项目组中删除特定目录。
这是脚本:
<ItemGroup>
<Files Include=".\Dir1\**\*.*" />
<Files Include=".\Dir2\**\*.*" />
</ItemGroup>
<Target Name="CopyFiles">
<ItemGroup>
<Files Remove=".\**\.svn\**" />
<ItemGroup>
<Copy SourceFiles="@(Files)" DestinationFolder="..\OtherDir\%(Files.RecursiveDir)"
</Target>
结果是:
..\OtherDir\FileFromDir1.txt
..\OtherDir\FileFromDir2.txt
但我需要:
..\OtherDir\Dir1\FileFromDir1.txt
..\OtherDir\Dir2\FileFromDir2.txt
如何实现这一目标?
答案 0 :(得分:2)
不能让这个常见问题无法解答......
解决方案是在父目录名称之前添加额外的**
前缀:
<ItemGroup>
<Files Include=".\**\Dir1\**\*.*" />
<Files Include=".\**\Dir2\**\*.*" />
</ItemGroup>
答案 1 :(得分:1)
您想使用DestinationFiles,而不是DestinationFolder,并且可以使用项目转换来构建路径。
<Copy
SourceFiles="@(Files)"
DestinationFiles="@(Files->'..\OtherDir\%(RecursiveDir)%(FileName)%(Extension)')"
/>
答案 2 :(得分:0)
尝试将%(Files.RecursiveDir)更改为
%(RecursiveDir)%(文件名)%(扩展部分)
给你
DestinationFolder =&#34; .. \ OtherDir \%(RecursiveDir)%(文件名)%(扩展部分)&#34;