如何从Windows命令提示符中删除文件夹的内容?

时间:2008-12-05 21:19:48

标签: deployment command-line msbuild

我正在使用MSBuild编写部署脚本。我希望在复制所有新文件之前清理我的网页目录。我当前的“清洁”目标如下所示:

 <Target Name="Clean">
    <Exec Command="del %(DeploymentSet.LocalWebRoot)\* /Q /F /S" IgnoreExitCode="true" />
  </Target>

这需要相当长的时间,因为每个文件都是从每个子文件夹中单独删除的。

有没有一种很好的方法可以删除给定文件夹中的所有内容而不删除该文件夹?我想维护我的权限和vdir设置信息。

2 个答案:

答案 0 :(得分:1)

您可以单独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>

答案 1 :(得分:0)

如果您不想指定每个子目录的名称,请使用:

<Target Name="Clean">
    <Exec Command="del /F /Q %(DeploymentSet.LocalWebRoot)\*.*" />
    <Exec Command="for /d /r &quot;%(DeploymentSet.LocalWebRoot)&quot; %v IN (*) DO rd /S /Q &quot;%v&quot;" />
</Target>