Recursion MSbuild批处理--递归文件夹复制到多个目标文件夹
我遇到了一种情况。我正在尝试使用MSBuild批处理将文件夹子目录以及文件复制到多个dest文件夹。 但是当我运行下面的脚本时,它也会从根目标目录的子目录中转储src内容中的每一个内容,而我希望得到与目标目录中src内容完全相同的结构Recursion MSbuild批处理--递归文件夹复制到多个目标文件夹,recursion,msbuild,copy,directory,batching,Recursion,Msbuild,Copy,Directory,Batching,我遇到了一种情况。我正在尝试使用MSBuild批处理将文件夹子目录以及文件复制到多个dest文件夹。 但是当我运行下面的脚本时,它也会从根目标目录的子目录中转储src内容中的每一个内容,而我希望得到与目标目录中src内容完全相同的结构 <PropertyGroup> <Srcfldr>C:\helloworld\REService</Srcfldr> <DestFldr>C:\Projects\desire\Examples
<PropertyGroup>
<Srcfldr>C:\helloworld\REService</Srcfldr>
<DestFldr>C:\Projects\desire\Examples</DestFldr>
</PropertyGroup>
<ItemGroup>
<SrcToCopy Include="$(Srcfldr)\*.*"/>
</ItemGroup>
<ItemGroup>
<DestToCopy Include="$(DestFldr)/destfldr1"/>
<DestToCopy Include="$(DestFldr)/destfldr2"/>
<DestToCopy Include="$(DestFldr)/destfldr3"/>
</ItemGroup>
<Target Name="DeployBatching">
<RemoveDir Directories="@(DestToCopy)"/>
<MakeDir Directories="@(DestToCopy)"/>
<Copy SourceFiles="@(SrcToCopy)" DestinationFolder="%(DestToCopy.FullPath)" />
你能告诉我我做错了什么吗
SK普通复制任务更适合复制文件而不是目录,在任何情况下,为了保留结构,您需要使用%RecursiveDir和%Filename%扩展名元数据重新映射目标。看 编辑:
看起来它不像我想要的那样工作。。。我尝试了下面的代码
<PropertyGroup>
<Srcfldr>C:\helloworld\REService</Srcfldr>
<DestFldr>C:\Projects\desire\Examples</DestFldr>
</PropertyGroup>
<ItemGroup>
<SrcToCopy Include="$(Srcfldr)\*.*"/>
</ItemGroup>
<ItemGroup>
<DestToCopy Include="$(DestFldr)/destfldr1"/>
<DestToCopy Include="$(DestFldr)/destfldr2"/>
<DestToCopy Include="$(DestFldr)/destfldr3"/>
</ItemGroup>
<PropertyGroup>
<DestToCopyvar>%(DestToCopy)</DestToCopyvar>
</PropertyGroup>
<Target Name="DeployBatching">
<Copy SourceFiles="@(SrcToCopy)" DestinationFiles="@(SrcToCopy->'$(DestToCopyvar)\%(RecursiveDir)%(Filename)%(Extension)')" />
它只是复制根目录中的根文件,同时缺少目录和子目录…这似乎对我现在起作用了
<PropertyGroup>
<Srcfldr>C:\Msbuild\exproj\Rebinaries</Srcfldr>
<copyfldr>c$\component1</copyfldr>
</PropertyGroup>
<ItemGroup>
<SrcToCopy Include="$(Srcfldr)\**\*"/>
</ItemGroup>
<ItemGroup>
<DestToCopy Include="\\devsvr1\$(copyfldr);\\devsvr2\$(copyfldr)"/>
</ItemGroup>
<Target Name="DeployBatching" Outputs="%(DestToCopy.FullPath)">
<PropertyGroup>
<DestToCopy>%(DestToCopy.FullPath)</DestToCopy>
</PropertyGroup>
<RemoveDir Directories="@(DestToCopy)"/>
<MakeDir Directories="@(DestToCopy)"/>
<Copy
SourceFiles="@(SrcToCopy)"
DestinationFiles="@(SrcToCopy->'$(DestToCopy)\%(RecursiveDir)\%(Filename)%(Extension)')"
/>
</Target>
看起来对我不起作用。。。我尝试了下面的代码%DestToCopy它只复制根目录中的根文件,缺少目录和子目录…@Satesh$Srcfldr\***这里**表示任何级别,这就是%RecursiveDir的用途。仔细阅读示例。是的,复制到单个目标文件夹是可行的,但从单个真实来源复制到多个目标文件夹对我来说是一个问题。不知何故,注释丢失了。。是的,效果如预期。谢谢@llYa
<PropertyGroup>
<Srcfldr>C:\Msbuild\exproj\Rebinaries</Srcfldr>
<copyfldr>c$\component1</copyfldr>
</PropertyGroup>
<ItemGroup>
<SrcToCopy Include="$(Srcfldr)\**\*"/>
</ItemGroup>
<ItemGroup>
<DestToCopy Include="\\devsvr1\$(copyfldr);\\devsvr2\$(copyfldr)"/>
</ItemGroup>
<Target Name="DeployBatching" Outputs="%(DestToCopy.FullPath)">
<PropertyGroup>
<DestToCopy>%(DestToCopy.FullPath)</DestToCopy>
</PropertyGroup>
<RemoveDir Directories="@(DestToCopy)"/>
<MakeDir Directories="@(DestToCopy)"/>
<Copy
SourceFiles="@(SrcToCopy)"
DestinationFiles="@(SrcToCopy->'$(DestToCopy)\%(RecursiveDir)\%(Filename)%(Extension)')"
/>
</Target>