我有一个执行目录列表的脚本,并首先将其放入最新的条目中。然后,我想逐步查看该目录中的文件,如果它存在,则停止,但如果它没有,则转到该数组的下一个项目。 C:\ Foo
下有许多目录我该怎么做?
<PropertyGroup>
<RootDir>C:\Foo</RootDir>
<OutputFile>C:\Output.txt</OutputFile>
</PropertyGroup>
<Target Name="Generate">
<Exec Command="dir "$(RootDir)" /ad /o-d /b > "$(OutputFile)"" />
<ReadLinesFromFile File="$(OutputFile)">
<Output TaskParameter="Lines" ItemName="OutputLines"/>
</ReadLinesFromFile>
<Message Text="@(OutputLines->'%(Identity)', '%0a%0d')" />
</Target>
所以OutputLines有数组,我想从数组的第一个位置开始(即C:\ Foo \ Dir1)并查找文件abc.zip。如果存在,则将该文件复制到其他位置,如果不存在则转到下一个项目(即C:\ Foo \ Dir2)。
感谢。任何帮助表示赞赏。对MSBuild来说还是一个新手。
答案 0 :(得分:0)
您已经创建了一个项目列表,这是一种肯定的数组。但是,您不在MSBuild中处理数组(或项目列表),就像编程时一样。相反,尝试使用通配符专门查找您想要的信息,如下所示:
<!-- This replaces the Exec and the ReadLinesFromFile tasks in your target -->
<ItemGroup>
<OutputLines Include="$(RootDir)**\abc.zip"/>
</ItemGroup>
然后使用您在新项目列表中发现的项目进行处理。