使用msbuild重复删除内容
我有一个目录结构,如下所示。我不知道会有多少父文件夹,但我知道每一个都将包含一个名为DATA的文件夹。数据文件夹的名称不会更改,但父文件夹可以称为任何名称 我想删除数据文件夹的所有内容,但使用msbuild将数据文件夹本身保留在适当的位置 我知道您可以使用msbuild Community Tasks/extension RemoveContent任务从文件夹中删除所有子目录和文件,而无需删除文件夹本身,但我不知道如何选择所有数据文件夹并对每个文件夹调用RemoveContent使用msbuild重复删除内容,msbuild,Msbuild,我有一个目录结构,如下所示。我不知道会有多少父文件夹,但我知道每一个都将包含一个名为DATA的文件夹。数据文件夹的名称不会更改,但父文件夹可以称为任何名称 我想删除数据文件夹的所有内容,但使用msbuild将数据文件夹本身保留在适当的位置 我知道您可以使用msbuild Community Tasks/extension RemoveContent任务从文件夹中删除所有子目录和文件,而无需删除文件夹本身,但我不知道如何选择所有数据文件夹并对每个文件夹调用RemoveContent TOP -
TOP
- PARENT1
- FOLDER1
- FOLDER2
- DATA
- SUBFOLDER
- SUBSUBFOLDER1
- <files>
- SUBSUBFOLDER2
- <files>
- SUBFOLDER
- SUBSUBFOLDER1
- <files>
- SUBSUBFOLDER2
- <files>
- PARENT2
- FOLDER1
- DATA
- SUBFOLDER
- SUBSUBFOLDER1
- <files>
- SUBSUBFOLDER2
- <files>
- SUBFOLDER
- SUBSUBFOLDER1
- <files>
- SUBSUBFOLDER2
- <files>
- PARENT3
- FOLDERABC
- DATA
- SUBFOLDER
- SUBSUBFOLDER1
- <files>
- SUBSUBFOLDER2
- <files>
- SUBFOLDER
- SUBSUBFOLDER1
- <files>
- SUBSUBFOLDER2
- <files>
- ...
顶部
-父母1
-折叠1
-折叠2
-资料
-子文件夹
-子文件夹1
-
-子文件夹2
-
-子文件夹
-子文件夹1
-
-子文件夹2
-
-父母2
-折叠1
-资料
-子文件夹
-子文件夹1
-
-子文件夹2
-
-子文件夹
-子文件夹1
-
-子文件夹2
-
-父母3
-福尔德拉BC
-资料
-子文件夹
-子文件夹1
-
-子文件夹2
-
-子文件夹
-子文件夹1
-
-子文件夹2
-
- ...
您可以使用System.IO.GetDirectory列出目录,因为这样可以轻松地使用通配符列出目录,然后使用RemoveContent任务对列表进行批处理。应该是这样的:
<Target Name="EraseEverythingUnderAllDataDirs">
<ItemGroup>
<Dirs Include="$([System.IO.Directory]::GetDirectories(`path\toTOP`,`DATA`,System.IO.SearchOption.AllDirectories))" />
</ItemGroup>
<MSBuild.ExtensionPack.FileSystem.Folder TaskAction="RemoveContent"
Path="%(Dirs.Identity)"/>
</Target>
我建议首先检查这是否是您想要的,使用Message任务而不是RemoveContent。不是开玩笑的,我有一次无意中删除了c:\上的内容,并对结果不感兴趣