2013-10-12 41 views
0

我有一个工作目录 文件夹1,文件夹2,folder3,folder4 .. folder10使用文件输入到复制特定的文件夹用的MSBuild

我有一个项目(文件夹)的文本文件的名称中它:

文件内容:

folder1 
folder2 
folder3 

我想从文件中读取行,然后只有那些文件夹复制到一个新的文件夹,同时保持目录结构。

mynewfolder{ folder1, folder2, folder3 } 

会有多个文件输入。得到的工作目录(我会打电话给父母)将这样的改变:

parent before msbuild: 
parent{ folder1, folder2, .., folder10, mybuild.xml} 

parent after msbuild: 
parent{ folder1, folder2, .., folder10, mybuild.xml, 
     mynewfolder{folder1, folder2, folder3}, 
     myothernewfolder{folder5, folder7, folder9} } 

我已经能够获得最接近的是要复制到mynewfolder所有文件夹1,文件夹2,和folder3的内容(所以,结构丢失)

我试着使用FindInList,我已经使用变换方法试过,我也试着调整一切来匹配这个例子: MSBuild - Comparing ItemGroups metadata

但我没有有很多运气。

我只有5个小时的MSBuild经验,所以我在这一点上有点失落。预先感谢您提供的任何帮助!

回答

1

这是你想要的吗?

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 

<Target Name="Sample"> 
    <ItemGroup> 
     <_File Include="fileWithDirectorieNames.txt" /> 
    </ItemGroup> 
    <PropertyGroup> 
     <_DestDir>d:\copy\</_DestDir> 
    </PropertyGroup> 

    <ReadLinesFromFile File="@(_File)" > 
     <Output TaskParameter="Lines" ItemName="ItemsFromFile"/> 
    </ReadLinesFromFile> 

    <ItemGroup> 
     <_files2Copy Include="%(ItemsFromFile.Identity)\**\*" > 
      <lastDir>%(ItemsFromFile.Filename)%(ItemFromFile.Extension)\</lastDir> 
     </_files2Copy> 
    </ItemGroup> 

    <Copy SourceFiles="@(_files2Copy)" 
      DestinationFiles="@(_files2Copy->'$(_DestDir)%(lastDir)%(RecursiveDir)%(Filename)%(Extension)')" /> 
</Target> 

+0

是啊,这就是它!谢谢! –

相关问题