什么事情发生deltree,并且它的replace是什么?
在MS-DOS的早期版本中 – 我想说的是版本7,但我可能是错的 – 有一个deltree
命令,recursion删除给定的path中的所有子目录和文件。
deltree
不再存在,但del
似乎并没有inheritance删除树的能力。 del /s
删除文件,但不是文件夹。
如何轻松地(即在一个命令)从batch file中删除一棵树?
正如其他人所说, rd
命令有/s
切换recursion删除子目录。 你可以把它和/q
开关结合起来强行删除一个子目录(及其内容)而不用提示
rd /s /qc:\foobar
每个人都缺less的是, rd
不是一个确切的替代deltree
,看起来( 几乎 )每个网页返回谷歌searchwindows deltree
会让你相信。 deltree
命令适用于目录和文件 ,这使得它成为一个简单的,通用的删除命令。 这是以下两个是有效的:
deltree /yc:\foobar deltree /yc:\baz.txt
然而rd
(不奇怪) 只适用于目录 。 因此,只有这些命令中的第一个是有效的,而第二个命令给出错误并且不删除文件:
rd /s /qc:\foobar rd /s /qc:\baz.txt
此外, del
命令仅适用于文件,而不适用于目录,因此只有第二个命令有效,而第一个命令给出错误:
del /f /qc:\foobar del /f /qc:\baz.txt
没有像deltree
可以完成的那样删除文件和目录的内置方式。 单独使用rd
和del
很不方便,因为它需要区分文件系统对象(文件/文件夹名称)是否是不总是可行或实用的文件或目录。
你可以从之前的操作系统拷贝deltree
命令,但是它只能在32位版本的Windows上运行,因为它是一个16位的DOS命令(甚至在Windows 9x中)。
另一个select是创build一个既调用del
又调用rd
的batch file; 像这样的东西:
::deltree.bat @echo off rd %* 2> nul del %* 2> nul
你会这样称呼它:
deltree.bat /s /q /fc:\foobar deltree.bat /s /q /fc:\baz.txt
这将调用rd
和del
,传入参数并将输出redirect到nul
以避免其中一个总是会发出的错误。
您可能需要自定义行为来容纳或简化参数或允许错误消息,但即使如此,它也不是理想的,不能直接替代deltree
。
另一种方法是获得第三方工具,但find一个工具是search查询工具中的一个真正的练习。
它被replace为命令:RMDIR或RD
用/ S删除所有子目录
用/ Q静静地使用它
例:
RMDIR /S /Q Folder2Delete RD /S /Q Folder2Delete
文档:
- DELTREE在维基百科
- RMDIR在维基百科
- RMDIR在微软
感觉怀旧,我写了我自己的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一样使用它:
deltree -rf *
rmdir /s /q directory
$ help rd 删除(删除)一个目录。 RMDIR [/ S] [/ Q] [drive:]path RD [/ S] [/ Q] [drive:]path / S删除指定目录中的所有目录和文件 除了目录本身。 用于删除目录 树。 / Q安静模式,不要问是否可以删除/ S目录树
实际上,现代Windows操作系统中的RMDIR和RD命令在一个命令中合并了Win 98的命令RD和Deltree。 这是一个内部命令,这就是为什么你不会find任何RD.exe和RMDIR.exe。
通过input这个“RD /?” 在cmd没有双重qoutes您将得到正是您想要的。
如今,您可以使用Powershell来完成相同的任务:
powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
删除一个目录和所有的内容recursion
rd /s MY_DOOMED_DIR