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

Deployment 如何从windows中的命令提示符中删除文件夹的内容?,deployment,command-line,msbuild,Deployment,Command Line,Msbuild,我正在使用MSBuild编写部署脚本。我想在复制中的所有新文件之前清理我的web目录。我当前的“干净”目标如下所示: <Target Name="Clean"> <Exec Command="del %(DeploymentSet.LocalWebRoot)\* /Q /F /S" IgnoreExitCode="true" /> </Target> 这需要相当长的时间,因为每个文件都会分别从每个子文件夹中删除 有没有一种很好的方法可以在不

我正在使用MSBuild编写部署脚本。我想在复制中的所有新文件之前清理我的web目录。我当前的“干净”目标如下所示:

 <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>

...

如果不想指定每个子目录的名称,请使用以下命令:

<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>


我想说的是del*,但您已经在这样做了…尝试保持它的通用性,以便clean可以适用于任何给定的DeploymentSet.LocalWebRoot。。。我们必须考虑这个问题。是的,这是一个折衷方案,rmdir可能不会更快地保证交易。