Msbuild - 如何删除文件夹内容但不删除文件夹本身?

时间:2013-02-27 10:31:22

标签: msbuild

现在我的msbuild脚本是删除文件夹的任务

<RemoveDir Directories="$(Bin)"/>

但是我宁愿删除文件夹的内容,但保留文件夹(以防有人在Windows资源管理器中打开文件夹)。我怎么能这样做?

2 个答案:

答案 0 :(得分:22)

这将删除所有文件和子文件夹:

    <Target Name="CleanFolder">

    <PropertyGroup>
      <TargetFolder>c:\clean</TargetFolder>
    </PropertyGroup>

    <ItemGroup>
      <FilesToClean Include="$(TargetFolder)\**\*"/>
      <Directories Include="$([System.IO.Directory]::GetDirectories('$(TargetFolder)', '*', System.IO.SearchOption.AllDirectories))"
                   Exclude="$(TargetFolder)"/>
    </ItemGroup>

    <Delete Files="@(FilesToClean)" ContinueOnError="true"/>
    <RemoveDir Directories="@(Directories)" />
  </Target>

使用openfiles工具删除打开的连接也是一件好事:

openfiles /disconnect /ID *

答案 1 :(得分:9)

下载并安装msbuild extension pack,然后使用

<MSBuild.ExtensionPack.FileSystem.Folder TaskAction="RemoveContent" Path="$(Bin)" />