【问题标题】:Use "rmdir" functionality but keep specified directory使用“rmdir”功能但保留指定目录
【发布时间】:2011-08-31 18:23:17
【问题描述】:

我想要rmdir /s 的功能,但我需要保留指定的目录。 rmdir /s 删除指定目录之外的所有文件和子目录。

我也尝试过使用del /s,但随后在指定目录中留下了空文件夹。我也需要删除这些文件夹。

关于如何做到这一点的任何指导?

【问题讨论】:

  • 你的意思是你想清空一个目录而不删除它?
  • 您可以使用 rd 命令 - 回答如下。
  • rd 和 rmdir 是一回事

标签: batch-file cmd windows-console


【解决方案1】:

最简单的方法是将目录更改为指定目录并在“。”上调用 rd 命令。目录。喜欢:

cd toYourDirectory (or pushd toYourDirectory)
rd /q /s . 2> nul
  • /q - 确保不会提示您
  • /s - 做子文件夹,文件,所以 上..
  • “。” - 表示当前目录
  • 2>nul - 确保它不会报告 rd 命令尝试删除自身时的错误(即 你想要什么)

【讨论】:

    【解决方案2】:

    FOR /F "USEBACKQ tokens=*" %%F IN (`dir /b /a:d /s "C:\top\directory\" ^| FIND /v /i "C:\directory\to\omit"`) DO (
     rmdir /s "%%F"
    )
    

    如果您想进行危险攻击,请使用/q 开关和rmdir 0.o

    假设您想在C:\Documents and Settings\Mechaflash\ 上执行remdir /s,但是您希望保留.\Mechaflash 文件夹(清空)

    FOR /F "USEBACKQ tokens=*" %%F IN (`dir /b /a:d /s "C:\Documents and Settings\Mechaflash\" ^| FIND /v /i "C:\Documents and Settings\Mechaflash\"`) DO (
     rmdir /s "%%F"
    )
    DEL /Q /F "C:\Documents and Settings\Mechaflash\*"
    

    【讨论】:

    • 非常感谢您的回答;但是,如果我要做两个语句,我还不如使用 rmdir 和 mkdir。
    • 是的... for 循环太矫枉过正了哈哈。 rmdir 和 mkdir 是完全一样的效果。现在除非有问题的文件夹有您想保留的系统/隐藏文件,否则文件夹上的 rmdir 可能并不理想
    • 除非绝对必要,否则永远不要以这种方式遍历dir 输出。直接使用for 进行迭代时,Unicode 文件名存在严重缺陷。在这种情况下,您可以简单地使用带有条件的普通 for 循环。虽然我不太明白你在哪里需要省略目录。
    • 使用 rmdir 和 mkdir 将失去对该目录的任何特殊权限 (ACL)。
    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 2016-03-17
    • 2012-09-28
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多