RM -rf相当于Windows?

我需要一种recursion的方式来删除一个文件夹及其子项,是否有一个预制的工具,或者我需要写一个?

DEL / S不会删除目录。

DELTREE已从Windows 2000+中删除

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

 rd /s /q "path" 

如果你使用的是PowerShell,你可以使用Remove-Item (别名为deleraserdrirmrmdir ),并且可以使用-Recurse参数来缩短-r

 rd -r "path" 

pipe理员:

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

适用于任何包括sys文件

编辑:我其实也find了解决文件path太长问题的最好方法:

 mkdir \empty robocopy /mir \empty folder 

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

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

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

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

你可以安装cygwin,里面有rmls

转到path并触发此命令。

 rd /s /q "FOLDER_NAME" 

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

/ q:以安静模式运行rmdir。 删除目录没有确认。

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

rmdir /S /Q %DIRNAME%

rmdir / s dirname

试试这个命令:

 del /s foldername 

您可以安装GnuWin32并在Windows上本地使用* nix命令。 我安装之前,我安装了任何其他的一个新鲜的Windows副本。 🙂

这是你需要做的…

用下面一行创build一个batch file

RMDIR /S %1

将您的batch file保存为Remove.bat并将其放在C:\windows

创build以下registry项

HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)

使用以下值启动regedit并更新默认值HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default

"c:\windows\REMOVE.bat" "%1"

而已! 现在你可以右键点击任何目录并使用RMDIRfunction

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

 if exist myfolder ( rmdir /s/q myfolder ) 

如果您使用的是旧版本的Windows,还有deltree。

我真的很喜欢这个网站查找命令: SS64:删除 – 删除文件

这是什么对我有用:

只要尝试减lesspath的长度。 即:将导致这样的文件的所有文件夹重命名为尽可能最小的名称。 说一个字母的名字。 继续在文件夹层次结构中向上重命名。 通过这个ü有效地减lesspath长度。 现在终于尝试删除文件马上。

首先,让我们回顾一下rm -rf作用:

 C:\Users\ohnob\things>touch stuff.txt C:\Users\ohnob\things>rm -rf stuff.txt C:\Users\ohnob\things>mkdir stuff.txt C:\Users\ohnob\things>rm -rf stuff.txt C:\Users\ohnob\things>ls -l total 0 C:\Users\ohnob\things>rm -rf stuff.txt 

有三种情况,其中rm -rf常用于预期返回0

  1. 指定的path不存在。
  2. 指定的path存在,并且是一个目录。
  3. 指定的path存在并且是一个文件。

我将忽略整个权限的事情,但是没有人使用权限,或者试图否认自己在Windows中写入对事物的访问权限(好的,这就是一个笑话…)。

首先将ERRORLEVEL设置为0 ,然后根据目录是否存在,使用不同的命令删除path。 如果path不存在,那么IF EXIST不会将ERRORLEVEL设置为0,因此,首先将ERRORLEVEL设置为0是正确检测成功的必要条件,这样可以模仿正常的rm -rf使用。 用IF EXIST来保护RD是很有必要的,因为RD不像rm -f ,如果目标不存在就会抛出一个错误。

以下脚本片段假定DELPATH是预先引用的。 (当你做一些类似SET DELPATH=%1操作时,这是很安全的。试着把ECHO %1放在.cmd然后传递一个带有空格的参数,看看你自己会发生什么。 片段完成后,您可以使用IF ERRORLEVEL 1来检查失败。

 : # Determine whether we need to invoke DEL or RD or do nothing. SET DELPATH_DELMETHOD=RD PUSHD %DELPATH% 2>NUL IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD) IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP : # Reset ERRORLEVEL so that the last command which : # otherwise set it does not cause us to falsely detect : # failure. CMD /C EXIT 0 IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH% IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH% 

重点是,当环境符合POSIX时,一切都更简单。 或者,如果你安装一个最小的MSYS,并使用它。

删除/ s / q目录删除