在早期版本的MS-DOS中 - 我想说的是版本7,但我可能是错的 - 有一个deltree
命令,它递归地删除给定路径中的所有子目录和文件。deltree发生了什么事,它的替代品是什么?
deltree
不再存在,但del
似乎没有继承删除树的能力。 del /s
删除文件,但不删除文件夹。
如何轻松地(即在一个命令中)从批处理文件中删除树?
在早期版本的MS-DOS中 - 我想说的是版本7,但我可能是错的 - 有一个deltree
命令,它递归地删除给定路径中的所有子目录和文件。deltree发生了什么事,它的替代品是什么?
deltree
不再存在,但del
似乎没有继承删除树的能力。 del /s
删除文件,但不删除文件夹。
如何轻松地(即在一个命令中)从批处理文件中删除树?
正如其他人所说的,rd
命令有/s
切换到递归删除子目录。你可以用/q
开关结合起来,强行删除子目录(及其内容)不提示为使
rd /s /q c:\foobar
什么大家都缺少的是rd
是不为deltree
一个确切的更换为看似( almost)Google Googling为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
有删除的文件和目录,可以用deltree
做没有内置的方式。个别地使用rd
和del
最好是不方便的,因为它需要区分文件系统对象(文件/文件夹名称)是不是总是可能的或实际的文件或目录。
您可以从前一个操作系统复制deltree
命令,但它只能在32位版本的Windows上运行,因为它是一个16位DOS命令(即使在Windows 9x中)。
另一种选择是创建一个批处理文件调用两个del
和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
避免错误其中之一将不可避免地发出。
您可能需要自定义行为以容纳或简化参数或允许错误消息,但即使如此,它也不是理想的,也不是deltree
的直接替代品。
另一种方法是让一个第三方工具,但找到一个是一个真正的锻炼搜索查询,各具特色。
@TobyAllen,“rm”?你的意思是* rd *?如果是这样,那么你需要重新阅读帮助文本;它说*除了目录本身之外,删除指定目录中的所有目录和文件**。用于删除目录树。*就像我说的,它不会删除文件。如果你这样使用它:`rd/s foobar.txt`,如果你确定,它会提示你,如果你说yes(或者使用`/ q`开关),它会给出错误`The directory name是无效的。` – Synetech 2013-07-02 13:52:03
rmdir /s /q directory
它被替换的命令:RMDIR或RD
删除与/ S的所有子目录
与/ Q
实施例使用它悄悄:
RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete
文档:
RD/S/Q为我工作 – Ananda 2017-01-05 03:00:16
$ 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
其实RMDIR和RD现代的Windows操作系统命令在单个命令合并这两个命令RD和Win 98的Deltree之。这是一个内部命令,这就是为什么你不会找到任何RD.exe和RMDIR.exe。
通过输入“RD /?”在没有双重qoutes的cmd中,你会得到你想要的。
感觉怀旧,我写了我自己的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 *
删除一个目录和它的所有内容递归
rd /s MY_DOOMED_DIR
如今,你可以使用Powershell来完成相同的任务:
powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
的deltree是在5.0版本中引入的(我还记得能够使用它的喜悦) - 男人,我觉得自己老了。 – 2016-04-13 15:26:41