【问题标题】:How can I delete the contents of a folder from the command prompt in windows?如何从 Windows 的命令提示符中删除文件夹的内容?
【发布时间】:2012-04-12 16:25:44
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我想对 del * 说,但你已经这样做了......

标签: deployment command-line msbuild


【解决方案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>

【讨论】:

  • 试图保持其通用性,以便 clean 可以适用于任何给定的 DeploymentSet.LocalWebRoot... 将不得不考虑那个。
  • 是的,有一个权衡,rmdir 可能不会明显更快以保证交易。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 2019-01-18
    • 1970-01-01
    • 2012-02-28
    • 2010-12-30
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多