如何从Windows的命令提示符中删除文件夹的内容?
问题描述:
我正在使用MSBuild编写部署脚本。我想清理我之前复制了所有的新文件,网页目录我目前的“清洁”的目标看起来是这样的:如何从Windows的命令提示符中删除文件夹的内容?
<Target Name="Clean">
<Exec Command="del %(DeploymentSet.LocalWebRoot)\* /Q /F /S" IgnoreExitCode="true" />
</Target>
这需要一个相当长的时间,因为每个文件是从各子文件夹单独删除。
有没有一种很好的方法可以删除给定文件夹中的所有内容而不删除该文件夹?我想维护我的权限和vdir设置信息。
答
你可以分别为rmdir /s /q
各个子目录,然后del %(DeploymentSet.LocalWebRoot)\* /Q /F
你的干净目标。例如:
<Target Name="Clean">
<Exec Command="rmdir %(DeploymentSet.LocalWebRoot)\subdir1 /Q /S" IgnoreExitCode="true" />
<Exec Command="rmdir %(DeploymentSet.LocalWebRoot)\subdir2 /Q /S" IgnoreExitCode="true" />
...
<Exec Command="rmdir %(DeploymentSet.LocalWebRoot)\subdirN /Q /S" IgnoreExitCode="true" />
<Exec Command="del %(DeploymentSet.LocalWebRoot)\* /Q /F" IgnoreExitCode="true" />
</Target>
+0
试图保持它的通用性,以便干净的可以适用于任何给定的DeploymentSet.LocalWebRoot ...将不得不考虑那一个。 – NotMyself 2008-12-05 21:31:20
答
如果你不想指定每个子目录的名称,使用此:
<Target Name="Clean">
<Exec Command="del /F /Q %(DeploymentSet.LocalWebRoot)\*.*" />
<Exec Command="for /d /r "%(DeploymentSet.LocalWebRoot)" %v IN (*) DO rd /S /Q "%v"" />
</Target>
我要说德尔*,但你已经这样做。 .. – Powerlord 2008-12-05 21:28:17