【问题标题】:How to delete all files and sub-folders in a folder except for 1 folder in a .bat script?如何删除 .bat 脚本中除 1 个文件夹外的文件夹中的所有文件和子文件夹?
【发布时间】:2015-09-25 12:19:19
【问题描述】:

我有一个存储许多日志文件和子文件夹的文件夹。我想删除除 1 个名为 Excel_Export 的文件夹之外的所有文件和子文件夹,不应删除该文件夹。我在批处理脚本中使用以下命令:

move D:\ABC\Delete_Test\Retain_Folder D:\ABC
rd /s /q "D:\ABC\Delete_Test"
move D:\ABC\Retain_Folder D:\ABC\Delete_Test

但是,在此脚本运行后,除了其中的文件外,即使是“Retain_Folder”也会被删除。我在上面的命令中做错了什么? 另外,有没有更好的方法呢?

注意: 所有其他文件夹的名称(将被删除)都以“$”符号开头。

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    这是未经测试的 - 它会删除 d:\abc 中的所有正常文件,然后删除同一文件夹中以 $ 开头的所有文件夹。

    @echo off
    del "d:\abc\*.*?"
    for /d %%a in ("d:\abc\$*") do rd /s /q "%%a"
    

    【讨论】:

      【解决方案2】:

      您的想法可能是完成任务最有效(最快)的方法,除非您有一个小错误。您的RD 命令会删除Delete_Test 文件夹,因此您必须先重新创建它,然后才能将Retain_Folder 移回它所属的位置。当您 move 文件夹时,您可能还希望将输出重定向到 null - 您不需要看到移动消息。

      move "D:\ABC\Delete_Test\Retain_Folder" "D:\ABC" >nul
      rd /s /q "D:\ABC\Delete_Test"
      md "D:\ABC\Delete_Test"
      move "D:\ABC\Retain_Folder" "D:\ABC\Delete_Test" >nul
      

      只有在你开始之前就知道D:\ABC\Retain_Folder 不存在,或者如果它确实存在,那么它必须是空的,这个策略才有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多