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

Dav*_*lle 76 windows cmd dos batch-file

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

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

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

Syn*_*ech 83

正如其他人所提到的,该rd命令可以/s切换到递归删除子目录.您可以将其与/q交换机组合以强制删除子目录(及其内容),而不会提示

rd /s /q c:\foobar
Run Code Online (Sandbox Code Playgroud)

什么大家缺少的是,rd不是一个确切的更换deltree为看似(几乎由谷歌搜索返回)每一页windows deltree会让你相信.该deltree命令适用于目录和文件,使其成为一个方便的,通用的删除命令.这两个都是有效的:

deltree /y c:\foobar
deltree /y c:\baz.txt
Run Code Online (Sandbox Code Playgroud)

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

rd /s /q c:\foobar
rd /s /q c:\baz.txt
Run Code Online (Sandbox Code Playgroud)

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

del /f /q c:\foobar
del /f /q c:\baz.txt
Run Code Online (Sandbox Code Playgroud)

没有内置的方法可以删除文件和目录deltree.单独使用rddel单独是不方便的,因为它需要区分文件系统对象(文件 - /文件夹名称)是不总是可行或实际的文件或目录.

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

另一种选择是创建一个批处理文件调用两个delrd; 这样的事情:

::deltree.bat

@echo off
rd  %* 2> nul
del %* 2> nul
Run Code Online (Sandbox Code Playgroud)

你会这样称呼它:

deltree.bat /s /q /f c:\foobar
deltree.bat /s /q /f c:\baz.txt
Run Code Online (Sandbox Code Playgroud)

这会调用两者,rddel传入参数并重定向输出,nul以避免其中一个将始终发出的错误.

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

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

  • @TobyAllen,"rm"?你的意思是*rd*?如果是,那么您需要重新阅读帮助文本; 它说*除了目录本身之外,删除指定目录中的所有目录和文件**.用于删除目录树.*就像我说的,它不会删除文件.如果你这样使用它:`rd/s foobar.txt`,如果你确定它会提示你,如果你说是(或使用`/ q`开关),那么它会给出错误`目录名无效 (2认同)

Jer*_*iah 42

它被替换为命令:RMDIR或RD

使用/ S删除所有子目录

与/ Q安静地使用它

例:

RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete
Run Code Online (Sandbox Code Playgroud)

文档:

  • "RMDIR /S /Q .\" 有效地擦除当前目录及其下的所有内容。是的,它抱怨无法删除当前目录,这很有用。运行它时,请确保您位于正确的目录中!:) (3认同)

ray*_*chi 8

感觉怀旧,我写了自己的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.
Run Code Online (Sandbox Code Playgroud)

它需要通配符,你可以像unix rm一样使用它:

deltree -rf *
Run Code Online (Sandbox Code Playgroud)


Ros*_*res 5

现在,您可以使用 Powershell 来完成相同的任务:

powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
Run Code Online (Sandbox Code Playgroud)