使用命令行彻底删除 Windows 中的文件夹

使用命令行彻底删除 Windows 中的文件夹

我需要删除一个包含其他文件夹和文件的文件夹。我尝试了del命令rmdir,但有时它们会失败并显示一些错误行:[PATH]: The directory isn't empty.

还有其他好的办法吗?

答案1

我在使用自动构建脚本时经常遇到这种情况。

我猜原因可能是某个应用程序在该目录中打开了一个文件,并且使用了“共享删除”。也就是说,该应用程序允许删除该文件(这就是我认为 DeleteFile 调用不会失败的原因),但该文件只有在该应用程序关闭其句柄后才会消失。

这意味着当命令尝试删除文件夹时,文件可能仍在那里rmdir,因此出现错误消息。此后不久,所述应用程序将关闭其句柄,文件将消失,当您检查文件夹以查看正在讨论哪个文件时,rmdir它将是空的。

至少这是我的理论。

Harry Johnston 提出的解决方法看起来不错。只有我会在命令之间插入一个暂停rmdir。当然,Windows 没有易于编写的“暂停”命令(更正:旧版 Windows 没有,新版有 - 请参阅评论)。但如果秒级粒度足够,则可以使用以下命令ping创建暂停:

ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul

因此总计:

rd /s /q foo
:: retry once
if exist foo (
    :: clear errorlevel
    cmd /c
    :: pause
    ping -n 2 127.0.0.1 >nul
    :: retry
    rd /s /q foo
)
:: retry yet again
if exist foo (
    cmd /c
    ping -n 2 127.0.0.1 >nul
    rd /s /q foo
)
:: give up
if exist foo {panic}

答案2

尝试:

rmdir /S your_directory

或者:

rmdir /S /Q your_directory 

跳过确认信息。

答案3

您可能有一些只读文件,您可以使用 del /F 选项删除它们

     del /S /F your_directory
     rmdir your_directory

您可能还拥有一些隐藏文件,如果您确实要删除它们,那么您可以使用

     del /S /F /AH your_directory
     rmdir your_directory

如果仍然失败,则说明您没有权限删除某些文件,或者某些文件仍在使用中。

答案4

del对里面的文件使用,然后rmdir删除该文件夹。

要使用此rmdir方法删除所有文件,请使用/S开关目录名称,并/Q禁止提示删除。这是最好的方法,因为您不会错过任何文件。不过,使用 /Q 开关时要小心,因为它不会警告您系统或隐藏文件属性

相关内容