【问题标题】:Windows 7 empty entire directory from command lineWindows 7从命令行清空整个目录
【发布时间】:2011-05-05 15:47:28
【问题描述】:

我正在运行一个将战争文件部署到特定目录的批处理文件。但是,我想在递归部署到该目录之前清空该目录。

我发现这个脚本应该删除目录中的所有内容,包括文件夹和文件,但我收到此错误:“%%i 在这个时候是意外的。”

FOR /D %%i IN ("C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/abtapps/ROOT/*") DO RD /S /Q "%%i" DEL /Q "C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/abtapps/ROOT/*.*"

我只需要一种简单的方法来递归清空我的 ROOT 目录,方法是修复上面的脚本或使用其他方法。必须能够从批处理文件中执行此操作。

我正在运行 Windows 7。

解决方案

rmdir ROOT /s /q
mkdir ROOT

【问题讨论】:

    标签: windows windows-7 command-line batch-file


    【解决方案1】:

    您应该使用 rmdir /S。看看这个link

    【讨论】:

    • 是的,试过了,但它不起作用,因为您必须指定一个目录并将其删除,并且在 ROOT 中运行每个目录会浪费时间,我有超过 200 个目录在根。 “/s :删除指定目录和所有子目录,包括任何文件。使用 /s 删除树。” - 来自microsoft.com/resources/documentation/windows/xp/all/proddocs/…
    • 当我只运行 rmdir /s 时,它给我一个错误,说“语法不正确”。但我想我可以运行 rmdir ROOT /s /q 然后 mkdir ROOT
    【解决方案2】:

    我认为您正在寻找的是清除文件夹而不是删除它并重新创建它。这实际上会清除文件夹,因此您不必重新创建它。

    CD "C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/abtapps/ROOT" && FOR /D %i IN ("*") DO RD /S /Q "%i" && DEL /Q *.*  
    

    一些笔记。
    从命令行运行时,您只使用一个 % 。双打用于批处理文件。
    && 用于在同一行上运行多个命令。
    * && 在这种情况下特别重要,因为如果 cd 失败,您不希望 del /q . 运行,因为您将删除您开始时所在目录的内容。

    【讨论】:

    • 使用cd /d 如果您在不同的驱动器上也可以更改目录。或者只使用pushd/popd,这样您之后就会再次在同一个位置。
    【解决方案3】:

    试试这个:

    forfiles /p "文件夹" /s /c "cmd /c rd /q @path

    用您的文件夹名称或驱动器号替换“文件夹”

    例如:forfiles /p f: /s /c "cmd /c rd /q @path

    这将遍历所有子文件夹,并且只删除空文件夹。 如果您在命令行中使用它,您将收到非空文件夹的错误消息。如果你把它放在一个批处理脚本中,它会需要一些时间来运行,这取决于你有多少个文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 2013-06-11
      • 2023-04-02
      • 2019-06-14
      • 1970-01-01
      相关资源
      最近更新 更多