在早期版本的 MS-DOS 中——我想说的是版本 7,但我可能错了——有一个deltree
命令,它递归地从给定路径中删除所有子目录和文件。
deltree
不再存在,但del
似乎没有继承删除树的能力。del /s
删除文件,但不删除文件夹。
如何轻松(即,在一个命令中)从批处理文件中删除一棵树?
在早期版本的 MS-DOS 中——我想说的是版本 7,但我可能错了——有一个deltree
命令,它递归地从给定路径中删除所有子目录和文件。
deltree
不再存在,但del
似乎没有继承删除树的能力。del /s
删除文件,但不删除文件夹。
如何轻松(即,在一个命令中)从批处理文件中删除一棵树?
正如其他人所提到的,该rd
命令具有/s
递归删除子目录的开关。您可以将它与/q
开关结合使用以强制删除子目录(及其内容)而不提示
rd /s /q c:\foobar
每个人都缺少的是,它rd
并不能完全替代谷歌搜索返回的deltree
似乎(几乎)每一页,因为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
anddel
充其量是不方便的,因为它需要区分文件系统对象(文件/文件夹名称)是文件还是目录,这并不总是可行或实用的。
您可以从以前的操作系统复制该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
and del
,传入参数并将输出重定向到nul
以避免其中一个总是会发出的错误。
您可能希望自定义行为以适应或简化参数或允许错误消息,但即便如此,它也不理想,也不能直接替代deltree
.
另一种方法是获取第三方工具,尽管找到一个是搜索查询制作的真正练习。
它被替换为命令:RMDIR 或 RD
使用 /S 删除所有子目录
用 /Q 安静地使用它
例子:
RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete
文档:
怀着怀旧之情,我编写了自己的 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 *
rmdir /s /q directory
如今,您可以使用 Powershell 执行相同的任务:
powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
$帮助研发 移除(删除)一个目录。 RMDIR [/S] [/Q] [驱动器:]路径 RD [/S] [/Q] [驱动器:]路径 /S 删除指定目录下的所有目录和文件 除了目录本身。用于删除目录 树。 /Q 安静模式,不询问是否可以用 /S 删除目录树
实际上,现代 Windows 操作系统中的 RMDIR 和 RD 命令将 Win 98 的 RD 和 Deltree 命令合并在一个命令中。这是一个内部命令,这就是您找不到任何 RD.exe 和 RMDIR.exe 的原因。
通过键入此“RD /?” 在没有双引号的 cmd 中,您将得到您想要的。
递归删除目录及其所有内容
rd /s MY_DOOMED_DIR
用这个:
cd (your directory here)
del *.* /f /s /q
删除所有文件和子目录
cd /d Directory && rd /s /q .\