关于cmd:“rm -rf”相当于Windows?

关于cmd:“rm -rf”相当于Windows?

“rm -rf” equivalent for Windows?

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

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

DEL /S不会删除目录。

DELTREE已从Windows 2000+中删除


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

1
rd /s /q"path"

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

1
rd -r"path"

管理员:

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

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

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

1
2
mkdir \empty
robocopy /mir \empty folder


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

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

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

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


转到路径并触发此命令。

1
rd /s /q"FOLDER_NAME"

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

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

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


您可以安装cygwin,其中包含rm以及ls等。


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

1
if exist myfolder ( rmdir /s/q myfolder )


rmdir /S /Q %DIRNAME%


试试这个命令:

1
del /s foldername

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

1
2
3
4
5
6
7
8
9
10
11
12
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的位置:

  • 指定的路径不存在。
  • 指定的路径存在并且是目录。
  • 指定的路径存在且是文件。
  • 我将忽略整个权限的事情,但没有人使用权限或试图拒绝自己写入Windows中的东西访问(好吧,这意味着一个笑话......)。

    首先将ERRORLEVEL设置为0,然后仅在路径存在时删除路径,使用不同的命令,具体取决于它是否是目录。如果路径不存在,IF EXIST不会将ERRORLEVEL设置为0,因此首先必须将ERRORLEVEL设置为0才能以模仿正常rm -rf用法的方式正确检测成功。使用IF EXIST保护rd是必要的,因为rdrm -f不同,如果目标不存在则会抛出错误。

    以下脚本片段假定DELPATH是预先引用的。 (当你执行SET DELPATH=%1之类的操作时,这是安全的。尝试将ECHO %1放在.cmd中,并在其中传递带有空格的参数,看看自己会发生什么)。代码段完成后,您可以使用IF ERRORLEVEL 1检查失败。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    : # 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并使用它。


    rmdir / s dirname


    这是你需要做的......

    使用以下行创建批处理文件

    RMDIR /S %1

    将批处理文件另存为Remove.bat并将其放在C:\windows

    创建以下注册表项

    HKEY_CLASSES_ROOT\Directory\shell
    emove Directory (RMDIR)

    启动regedit并更新默认值HKEY_CLASSES_ROOT\Directory\shell
    emove Directory (RMDIR)\default

    具有以下值

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

    而已!现在,您可以右键单击任何目录并使用RMDIR功能


    您可以在Windows上安装GnuWin32并在本机上使用* nix命令。我安装这个之前,我在一个薄薄的新的Windows副本上安装任何其他东西。 :)


    自行承担使用风险。提供的信息"按原样"。没有经过严格的考验。

    右键单击Windows图标(通常是左下角)>单击"Windows PowerShell(Admin)">使用此命令(如果不小心,可以轻松删除所有文件):

    1
    rd -r -include *.* -force somedir

    其中somedir是要删除的非空目录。

    请注意,对于外部附加磁盘或有问题的磁盘,Windows有时表现为奇怪 - 它在删除(或任何复制尝试)中不会出错,但目录不会按照指示删除(或不复制)。 (我发现在这种情况下,至少对我来说,@ n_y在他的回答中给出的命令会产生错误,例如'get-childitem:文件或目录已损坏且无法读取。'因此在PowerShell中)


    使用Powershell 5.1

    1
     get-childitem *logs* -path .\ -directory -recurse | remove-item -confirm:$false -recurse -force

    使用要删除的目录名替换日志。

    get-childitem从当前路径(。)递归搜索子目录。

    remove-item删除结果。


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

    1
    yarn global add rimraf

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

    1
    2
    rimraf .\**
    ode_modules

    或者对于允许你躲避全局安装的单行程序,但是对于程序包动态下载需要稍长的时间:

    1
    2
    npx rimraf .\**
    ode_modules

    通过Powershell

    1
     Remove-Item -Recurse -Force"TestDirectory"

    通过命令提示符

    https://stackoverflow.com/a/35731786/439130


    这对我有用:

    试着减少路径的长度。
    即::将导致此类文件的所有文件夹重命名为尽可能小的名称。说一个字母的名字。继续在文件夹层次结构中向上重命名。
    通过这个你有效地减少了路径长度。
    现在终于尝试立即删除文件。


    如果您使用的是旧版Windows,也可以使用deltree。

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


    del / s / q目录被删除


    推荐阅读

      linux命令补全工具?

      linux命令补全工具?,工具,系统,软件,地址,命令,名称,智能,环境,信息,终端,简

      linux命令删除用户组?

      linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

      linux删除重复项命令?

      linux删除重复项命令?,数据,系统,工具,电脑,项目,公式,百度,代码,名字,基础,

      linux硬链接删除命令?

      linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,l

      linux交互删除命令?

      linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,l

      linux删除无用的命令?

      linux删除无用的命令?,系统,软件,数据,员工,命令,信息,宽松,对比,状态,公司,L

      删除文件linux命令行?

      删除文件linux命令行?,命令,文件,不了,档案,名称,系统,数据,目录,文件夹,终

      linux命令行删除网卡?

      linux命令行删除网卡?,地址,网络,系统,工具,信息,设备,名字,管理,服务,网卡,l

      递归查找linux命令?

      递归查找linux命令?,时间,档案,命令,标准,数据,系统,名称,文件,服务,信息,lin

      linux命令删除字符串?

      linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空

      linux删除整个命令?

      linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,l

      linux系统命令行工具?

      linux系统命令行工具?,工具,系统,工作,状态,命令,地方,标准,信息,环境,基础,L

      linux如何命令删除?

      linux如何命令删除?,档案,系统,命令,文件,目录,通用,文件夹,终端,选项,参数,l

      删除路由命令linux?

      删除路由命令linux?,系统,信息,网络,地址,管理,环境,路由,命令,工作,基础,WIN

      linux命令删除当前行?

      linux命令删除当前行?,系统,位置,命令,文件夹,文件,标的,数据,环境,通用,不

      linux删除jog命令?

      linux删除jog命令?,工具,软件,连续,机器人,位置,中心,工作,平稳,人员,自动化

      linux删除服务的命令?

      linux删除服务的命令?,服务,系统,软件,平台,名称,管理,环境,产品,命令,文件,

      linux删除rm命令?

      linux删除rm命令?,系统,命令,文件夹,不了,通用,名称,环境,文件,目录,下面,lin

      linux命令下载工具?

      linux命令下载工具?,工具,网络,代理,代码,简介,位置,系统,第一,下载工具,文

      linux好用的命令工具?

      linux好用的命令工具?,系统,管理,工具,基础,服务,信息,工作,发行,公司,代码,L