0

folder1、folder2、folder3、folder4、.. folder10 の作業ディレクトリがあります。

プロジェクト (フォルダー) 名を含むテキスト ファイルがあります。

ファイルの内容:

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にfolder1、folder2、およびfolder3のすべてのコンテンツをコピーすることです(したがって、構造が失われました)

FindInList を使用しようとしました。また、変換方法を使用してみました。また、次の例に一致するようにすべてを調整しようとしました: MSBuild - ItemGroups メタデータの比較

しかし、私はあまり運がありませんでした。

私は MSBuild で約 5 時間しか経験していないので、この時点では少し迷っています。あなたが提供できる助けを前もってありがとう!

4

1 に答える 1

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>

于 2013-10-14T20:45:19.650 に答える