如何删除指定路径中的所有文件和文件夹?
我试过了,但我无法选择目录。
<Target Name="CleanSource" Condition="$(path)!=''">
<Message Text="path=$(path)"/>
<ItemGroup>
<fileToDelete Include="$(path)\**\*.*" />
<directoryToDelete Include="$(path)\**\" /><!these doest not select any directory at all-->
</ItemGroup>
<Message Text="file to delete:@(fileToDelete)"/>
<Message Text="directory to delete:@(directoryToDelete)"/>
<Delete Files="@(fileToDelete)" />
<Message Text="file effectively deleted:@(DeletedFiles)"/>
<RemoveDir Directories="@(directoryToDelete)" />
<Message Text="Directory effectively deleted:@(RemovedDirectories)"/>
</Target>
答案 0 :(得分:65)
RemoveDir task删除指定的目录及其所有文件和子目录。您不必先删除文件和子目录。只需将目录名称传递给RemoveDir。
<ItemGroup>
<DirsToClean Include="work" />
</ItemGroup>
<Target Name="CleanWork">
<RemoveDir Directories="@(DirsToClean)" />
</Target>
答案 1 :(得分:16)
虽然有方法只使用MSBuild来构建它,但我强烈推荐使用MSBuild扩展包。
http://msbuildextensionpack.codeplex.com/ [已被移动]
GitHub: MSBuildExtensionPack
使用该包,您将获得一个RemoveContent任务,该任务可以完全满足您的需求。安装完成后,您只需执行以下操作:
<MSBuild.ExtensionPack.FileSystem.Folder
TaskAction="RemoveContent" Path="$(PathtoEmpty)"/>
答案 2 :(得分:-1)
我迟到了这个对话,但我发现最简单的方法是使用Exec
任务执行lain给出的批处理命令以响应a similar question(你真正的小编辑:
<Exec Command="FOR /D %%p IN ("$(path)*.*") DO rmdir "%%p" /s /q" />
答案 3 :(得分:-18)
最后我确实使用了powershell,它的速度要快得多:
<exec>
<executable>powershell.exe</executable>
<buildArgs><![CDATA[-command "& {if( [System.IO.Directory]::Exists($pwd) ){dir $pwd | ri -recurse
-force}}"]]></buildArgs>
</exec>