Windows下的“rm -rf”等效命令是什么?

696

我需要一种递归删除文件夹及其子文件夹的方法。

是否有预先构建的工具可供使用,或者我需要编写一个工具?

DEL /S 命令无法删除目录。

DELTREE 在 Windows 2000+ 中已被移除。


6
好的,我会尽力为您提供准确的翻译。TLDR: 使用命令 rmdir /S /Q - masterxilo
24个回答

953

如果您使用经典命令提示符(cmd.exe),则使用RMDIR或RD:

rd /s /q "path"
[/S] [/Q] [drive:]path [/S] [/Q] [drive:]path /S 删除指定目录下的所有目录和文件,包括目录本身。用于删除目录树。 /Q 静默模式,不询问是否删除具有 /S 的目录树。 若您使用 PowerShell,则可以使用 命令(别名为 、、、、 和 ),并且它需要一个 参数,可以缩写为 <-r>。
rd -r "path"

113
值得指出的是,对于大量文件,使用rmdir /s /q通常比在资源管理器中执行等效的“选择目录,按shift + delete”操作要快得多。 - Wedge
18
这个命令无法像"rm -rf"一样删除文件,而且在目录不存在时它也会返回一个非零值。所以,如果目录“foo”不存在,"rd /s /q foo && echo "yay""将失败。请注意不要改变原意。 - Dirk Groeneveld
23
如果目录不为空,并且某些文件出现“访问被拒绝”的情况,而其他文件出现“由于另一个进程正在使用此文件,因此无法访问该文件”的情况,会怎样? - Eugene
8
我刚在Windows 7上尝试了这个,你需要输入/S和/Q(大写)。 - ford prefect
3
也许这在一些旧版Windows上可行,但现在已经完全不起作用了。 - Gangnus
显示剩余10条评论

167

管理员:

takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder

适用于任何文件,包括系统文件

编辑:我实际上找到了最好的方法,还可以解决文件路径太长的问题:

mkdir \empty
robocopy /mir \empty folder

5
我的英雄!还有一条建议:你可以在C盘下创建一个名为"empty"的空文件夹,在进入每个疯狂的文件夹后,只需执行robocopy /mir c:\empty .即可。 - Léon Pelletier
“takeown” 命令对我帮助很大,因为我不小心从 Linux 系统使用 rsync 复制了文件夹,而我没有权限删除该文件夹...... 甚至 robocopy 也无法起作用。谢谢。 - Jarda
1
非常好的答案。它有效。 (页面上的所有其他答案都不行)。但是cacls已被弃用。请问是否可能提供一个现代的答案?第二个变体已经可以工作且未被弃用。 - Gangnus
2
@bilal 用您的实际账户名替换"adminname"。 - wbkang
@wbkang 对我来说,rmdir无法正常工作是因为一些文件路径太长了,实际上你的将空文件夹复制到文件夹的解决方案是一个聪明的解决方案,谢谢。 - Yerrapotu ManojKiran
显示剩余2条评论

134

RMDIR [/S] [/Q] [drive:]path

RD [/S] [/Q] [drive:]path

  • /S 删除指定目录及其子目录下所有的文件和文件夹。用于删除一个目录树。

  • /Q 静默模式,在使用/S参数删除目录树时不询问确认。


1
最简单、最完美的答案。应该被接受。 - Artif3x
@Artif3x:这相当于rm -r而不是rm -rf - Joshua

28

前往该路径并执行此命令。

rd /s /q "FOLDER_NAME"

/s:删除指定目录及其所有子目录,包括其中的文件。使用/s可以删除整个树。

/q:以静默模式运行rmdir。无需确认即可删除目录。

/?:在命令提示符下显示帮助信息。


22

你可以安装cygwin,它包含rmls等命令。


18
rm -r -fo <path>

"最接近 Windows PowerShell 的命令是。它是”的缩写。

Remove-Item -Recurse -Force -Path <path>

(更多细节)


3
谢谢!这个建议实际上在Windows终端中起作用了。 - Nostalg.io

17

要删除一个目录(无论其是否存在),请使用以下命令:

if exist myfolder ( rmdir /s/q myfolder )

实际上这就是答案。谢谢@Clay。 - George Pligoropoulos

12

接受的回答很好,但是假设您已经安装了Node,您可以使用Node库“rimraf”更加精确地执行此操作,该库允许使用globbing模式。如果您经常使用这个(我经常使用),只需全局安装即可。

yarn global add rimraf

那么,举个例子,我经常使用的一种模式:

rimraf .\**\node_modules

或者使用一行代码,避免全局安装,但需要稍长一些时间来动态下载包:

npx rimraf .\**\node_modules

4
这是一个解决问题的可靠方案,因为它与操作系统无关。 - Denialos

10

7

尝试使用以下命令:

del /s foldername

与rmdir /s /q结合使用对我很有效,因为一些文件被锁定,rmdir无法删除这些文件。del / foldername清除了被锁定的文件,然后允许rmdir删除根目录。不错。 - bbqchickenrobot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接