代码之家  ›  专栏  ›  技术社区  ›  David Koelle

deltree到底发生了什么?它的替代品是什么?

  •  69
  • David Koelle  · 技术社区  · 17 年前

    在MS-DOS的早期版本中——我想说是版本7,但我可能错了——有一个 deltree

    德尔特里 del del /s 删除文件,但不删除文件夹。

    如何轻松地(即,在一个命令中)从批处理文件中删除树?

    10 回复  |  直到 11 年前
        1
  •  93
  •   Synetech    13 年前

    rd 命令具有 /s /q

    rd /s /q c:\foobar
    

    每个人都缺少的是 研发部 是 不 完全取代 deltree almost )通过谷歌搜索返回的每一页 windows deltree 你会相信的。这个 命令对这两个目录都有效 和文件

    deltree /y c:\foobar
    deltree /y c:\baz.txt
    

    研发部 . 因此,只有这些命令中的第一个命令有效,而第二个命令给出和错误并使文件不被删除:

    rd /s /q c:\foobar
    rd /s /q c:\baz.txt
    

    此外 del 命令仅适用于文件,不适用于目录,因此只有第二个命令有效,而第一个命令给出错误:

    del /f /q c:\foobar
    del /f /q c:\baz.txt
    

    没有内置的删除文件和目录的方法 德尔特里 . 使用 和 德尔 单独使用最多是不方便的,因为它需要区分文件系统对象(文件/文件夹名称)是文件还是目录,而这并不总是可行或实用的。

    和 研发部 ; 大概是这样的:

    ::deltree.bat
    
    @echo off
    rd  %* 2> nul
    del %* 2> nul
    

    你可以这样称呼它:

    deltree.bat /s /q /f c:\foobar
    deltree.bat /s /q /f c:\baz.txt
    

    这两者都需要 研发部 和 德尔 nul 以避免其中一个始终会发出的错误。

    您可能希望自定义行为以适应或简化参数或允许错误消息,但即使如此,它也不理想,也不能直接替代 德尔特里 .

    另一种选择是获得第三方工具,尽管在搜索查询过程中找到一个工具是一个真正的练习。

        2
  •  44
  •   Jeremiah    17 年前

    它被以下命令替换:RMDIR或RD

    使用/S删除所有子目录

    与/Q一起安静地使用它

    RMDIR /S /Q Folder2Delete
    RD /S /Q Folder2Delete
    

    文档:

        3
  •  10
  •   raychi    9 年前

    出于怀旧之情,我写了自己的deltree.exe。它同时处理目录和文件,并使用SHFileOperation()提高速度。

    https://github.com/ai7/toolbox/tree/master/deltree

    deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1)
    
    Usage: deltree [options] <path> ...
    
    Options:
      -y    yes, suppresses prompting for confirmation
      -s    silent, do not display any progress dialog
      -n    do nothing, simulate the operation
      -f    force, no prompting/silent (for rm compatibility)
      -r    ignored (for rm compatibility)
    
    Delete directories and all the subdirectories and files in it.
    

    它使用通配符,您可以像unix rm一样使用它:

    deltree -rf *
    
        4
  •  6
  •   Jon Skeet    17 年前
    rmdir /s /q directory
    
        5
  •  5
  •   Rosberg Linhares    9 年前

    现在,您可以使用Powershell执行相同的任务:

    powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
    
        6
  •  4
  •   Ferruccio    17 年前
    $help路
    删除一个目录。
    
    道路
    
    除了目录本身。用于删除目录
    树
    
    /Q安静模式,不询问是否确定删除带有/S的目录树
    
        7
  •  2
  •   Sohail xIN3N    12 年前

    实际上,现代Windows操作系统中的RMDIR和RD命令将win98的RD和Deltree命令合并到一个命令中。这是一个内部命令,因此您找不到任何RD.exe和RMDIR.exe。

    通过在cmd中键入此“RD/?”而不使用双qoutes,您将完全得到您想要的。

        8
  •  1
  •   Gregg    10 年前

    递归删除目录及其所有内容的步骤

    rd /s MY_DOOMED_DIR
    
        9
  •  0
  •   Stephen Rauch Afsar Ali    8 年前

    使用以下命令:

    cd (your directory here)
    del *.* /f /s /q
    
        10
  •  0
  •   user10439828 user10439828    8 年前

    删除所有文件和子目录

    cd /d Directory && rd /s /q .\
    
    推荐文章