"rm -rf"相当于Windows?

Fly*_*wat 460 windows cmd wsh

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

是否有预制的工具,或者我需要写一个?

DEL /S 不删除目录.

DELTREE 已从Windows 2000+中删除

Dun*_*art 632

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

rd /s /q "path"
Run Code Online (Sandbox Code Playgroud)

如果你正在使用PowerShell的你可以使用Remove-Item(这是化名为del,erase,rd,ri,rmrmdir),并需要一个-Recurse可以缩短到说法-r

rd -r "path"
Run Code Online (Sandbox Code Playgroud)

  • 值得指出的是,对于大量文件,rmdir/s/q通常比在资源管理器中等效的"select dir,shift + delete"操作快得多. (80认同)
  • 怎么样dir.不是空的,一些文件得到"访问被拒绝"和其他`进程无法访问该文件,因为它正被另一个进程使用? (16认同)
  • 这不会删除文件,比如rm -rf会这样做,并且当目录不存在时它也返回一个非零值,所以如果目录"foo",`rd/s/q foo && echo"yay"`将失败"不存在. (9认同)
  • 我刚刚尝试了七次,你需要做/ S和/ Q(上限) (5认同)
  • 使用标志来匹配目录名称怎么样?如果我想删除 foo\ 下的所有目录,`rmdir /s /q foo\*` 会给出语法错误的错误。 (2认同)
  • 在这里神秘.我*知道*我尝试了这个命令,如果目录树中有文件,它就无法工作; 现在我回去了...神奇地似乎工作.有没有其他人遇到过不一致的行为?! (2认同)
  • 也许它在一些较旧的窗口中工作。但现在它根本不起作用。 (2认同)

wbk*_*ang 133

管理员:

takeown /r /f folder
cacls folder /c /G "ADMINNAME":F /T
rmdir /s folder
Run Code Online (Sandbox Code Playgroud)

适用于任何包括sys文件的内容

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

mkdir \empty
robocopy /mir \empty folder
Run Code Online (Sandbox Code Playgroud)

  • 我的英雄!还有一个提示:你在C:\ empty创建空文件夹,然后在每个疯狂文件夹里面,你可以做一个`robocopy/mir c:\ empty. (3认同)
  • @bilal 将“adminname”替换为您的实际帐户名。 (2认同)

Jim*_*eth 111

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

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

  • /S 除目录本身外,还删除指定目录中的所有目录和文件. 用于删除目录树.

  • /Q 安静模式,不要问是否可以删除目录树 /S

  • 感谢参数说明.不幸的是,接受的答案不会这样做. (12认同)

use*_*481 19

你可以安装cygwin,它具有rmls


Sir*_*dda 19

转到路径并触发此命令.

rd /s /q "FOLDER_NAME"
Run Code Online (Sandbox Code Playgroud)

/ s:删除指定的目录和所有子目录,包括任何文件.使用/ s删除树.

/ q:以安静模式运行rmdir.删除目录而不确认.

/?:在命令提示符下显示帮助.


Art*_*f3x 9

接受的答案很好,但假设您安装了 Node,您可以使用节点库“rimraf”更精确地执行此操作,它允许使用通配模式。如果你经常使用它(我这样做),只需全局安装它。

yarn global add rimraf
Run Code Online (Sandbox Code Playgroud)

然后,例如,我经常使用的模式:

rimraf .\**\node_modules
Run Code Online (Sandbox Code Playgroud)

或者对于让您避开全局安装的单行程序,但包动态下载所需的时间稍长:

npx rimraf .\**\node_modules
Run Code Online (Sandbox Code Playgroud)

  • 该问题的可靠解决方案,因为它与操作系统无关。 (3认同)

Cla*_*lay 8

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

if exist myfolder ( rmdir /s/q myfolder )
Run Code Online (Sandbox Code Playgroud)


cil*_*ler 8

通过 Powershell

 Remove-Item -Recurse -Force "TestDirectory"
Run Code Online (Sandbox Code Playgroud)

通过命令提示符

/sf/answers/2501225051/


Jer*_*ten 5

试试这个命令:

del /s foldername
Run Code Online (Sandbox Code Playgroud)


Bra*_*nan 5

rmdir /S /Q %DIRNAME%


sta*_*tor 5

rm -r -fo <path>
Run Code Online (Sandbox Code Playgroud)

是您在 Windows PowerShell 中可以获得的最接近的。它是英文缩写

Remove-Item -Recurse -Force -Path <path>
Run Code Online (Sandbox Code Playgroud)

(更多细节)

  • 谢谢你!这个建议在 Windows Terminal 中确实有效。 (3认同)