2013-01-17 15:33:22 +0000 2013-01-17 15:33:22 +0000
59
59

在Windows中使用命令行

完全删除一个文件夹,我需要删除一个包含其他文件夹和文件的文件夹。我试过delrmdir命令,但有时会出现一些错误行:[PATH]: The directory isn't empty.

有什么好的办法吗?

答案 (8)

58
58
58
2013-01-17 15:38:19 +0000

试试:

rmdir /S your_directory

或: rmdir /S /Q your_directory

来跳过确认信息。

16
16
16
2013-07-16 16:23:26 +0000

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

至少我的理论是这样的。只是我会在rmdir命令之间插入一个停顿。当然,Windows并没有简单的脚本化的 "暂停 "命令(更正:古老的Windows版本没有,较新的版本有–见注释)。但如果秒的粒度足够大,可以用rmdir来创建一个暂停:

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}
``` 所以总共:


&001
11
11
11
2013-01-17 16:27:07 +0000

你可能有一些只读文件,你可以使用 del /F 选项来删除这些文件。

5
5
5
2013-01-17 22:34:36 +0000

我相信在Windows 7(也许还有其他版本)有一个错误,有时会导致这种症状;也可能是第三方软件的错误。(你是否安装了赛门铁克的端点保护系统?)

总之,我经常遇到这种情况。在大多数情况下,可以通过连续运行rd /s /q两次或三次来解决这个问题。

如果这是在一个批处理文件中,你可以这样做:

rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
3
3
3
2013-01-17 15:36:33 +0000

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

如果要用rmdir的方法把所有的文件也都删除,可以用/S开关目录名,/Q抑制提示删除。这是最好的方法,因为你不会遗漏任何文件。但要小心使用/Q开关,因为它不会警告你系统或隐藏文件的属性。

2
2
2
2017-12-01 18:08:45 +0000

如果你使用 node ,你可以使用 rimraf 依赖关系:

运行安装:* npm install rimraf -g

删除文件夹: rimraf SourceFolder

删除文件夹: &007

这对我在收到错误时有帮助:

源文件名大于文件系统支持的文件名

0
0
0
2015-11-16 14:47:29 +0000

我认为可以这样使用:

msg*your file is going to delete 
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\" 
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"
0
0
0
2016-06-24 18:30:12 +0000

在Windows的旧版本(DOS、Windows 95/98/ME)的文件夹中,DELTREE相当于RMRMDIR。我在我的Windows 7工作站上使用DELTREE的批处理文件就好了。