正如其他人所提到的,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
和
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
的直接替代品。另一种选择是获取第三方工具,尽管找到一个是真正的搜索查询技巧练习。