deltree发生了什么事,它的替代品是什么?

时间:2008-12-03 21:59:56

标签: windows batch-file cmd dos

在早期版本的MS-DOS中 - 我想说版本7,但我可能错了 - 有一个deltree命令,它以递归方式删除给定路径中的所有子目录和文件。

deltree不再存在,但del似乎没有继承删除树的功能。 del /s删除文件,但不删除文件夹。

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

10 个答案:

答案 0 :(得分:81)

正如其他人所提到的,rd命令具有/s切换以递归删除子目录。您可以将它与/q开关结合使用,强制删除子目录(及其内容),而不会提示如此

rd /s /q c:\foobar

每个人都缺少的是rd deltree的确切替代品,因为貌似(almost)Google搜索返回的每个页面{{1}你能相信吗? windows deltree命令适用于目录和文件,使其成为一个方便的,通用的删除命令。这两个都是有效的:

deltree

然而deltree /y c:\foobar deltree /y c:\baz.txt (毫不奇怪)仅适用于目录。因此,只有这些命令中的第一个有效,而第二个给出和错误,并且文件未被删除:

rd

此外,rd /s /q c:\foobar rd /s /q c:\baz.txt 命令仅适用于文件,而不适用于目录,因此只有第二个命令有效而第一个命令有效:

del

没有像使用del /f /q c:\foobar del /f /q c:\baz.txt 那样删除文件和目录的内置方法。单独使用deltreerd最多是不方便的,因为它需要区分文件系统对象(文件 - /文件夹名称)是不是总是可行或实际的文件或目录。

您可以从以前的操作系统中复制del命令,但它只能在32位版本的Windows上运行,因为它是16位DOS命令(即使在Windows 9x中)。

另一种选择是创建一个同时调用deltreedel的批处理文件;像这样的东西:

rd

您可以这样称呼它:

::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 rd,传入参数并将输出重定向到del,以避免其中一个将始终发出的错误。

您可能希望自定义行为以容纳或简化参数或允许错误消息,但即使这样,它也不是理想的,也不能直接替代nul

另一种方法是获得第三方工具,但在搜索查询制作中找到一个是真正的练习。

答案 1 :(得分:41)

它被替换为命令:RMDIR或RD

使用/ S

删除所有子目录

使用/ Q

安静地使用它

示例:

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

文档:

答案 2 :(得分:6)

感觉怀旧,我写了自己的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 *

答案 3 :(得分:5)

rmdir /s /q directory

答案 4 :(得分:4)

$ help rd
Removes (deletes) a directory.

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

    /S      Removes all directories and files in the specified directory
            in addition to the directory itself.  Used to remove a directory
            tree.

    /Q      Quiet mode, do not ask if ok to remove a directory tree with /S

答案 5 :(得分:4)

如今,您可以使用Powershell执行相同的任务:

powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"

答案 6 :(得分:2)

实际上,现代Windows操作系统中的RMDIR和RD命令在单个命令中将命令RD和Deltree of Win 98合并。这是一个内部命令,这就是为什么你找不到任何RD.exe和RMDIR.exe。

输入“RD /?”在没有双qoutes的cmd中,你会得到你想要的。

答案 7 :(得分:0)

以递归方式删除目录及其所有内容

rd /s MY_DOOMED_DIR

答案 8 :(得分:0)

使用此:

cd (your directory here)
del *.* /f /s /q

答案 9 :(得分:-1)

删除所有文件和子目录

cd /d Directory && rd /s /q .\