通过命令提示符仅从目录中删除文件和子文件夹

Remove only files and sub folders from a directory through command prompt

我在 C:\Test 路径中有一个名为 Test 的文件夹。此 Test 文件夹中有多个文件和文件夹。现在我想删除 Test 文件夹中的所有内容,而不是删除 Test 文件夹本身。

我一直在尝试这些命令,但它只会删除文件,不会删除文件夹。

del C:\Test\* 
del C:\Test\*.*

我想要一个命令来删除 Test 中的文件和子文件夹。

这是必须使用的命令。

CD "C:/Test" && FOR /D %i IN ("*") DO RD /S /Q "%i" && DEL /Q *.* 

单条命令不行,单条命令行不行

我会这样做:

cd /D "C:\Test" && rd /S /Q "C:\Test"

这首先更改为目标根目录。 && operator 让后面的命令只有在前面的命令成功时才执行。然后尝试删除该目录及其所有内容;对于内容它工作正常,但对于根本身,错误 The process cannot access the file because it is being used by another process. 因为前面的 cd 命令。可以通过将 2> nul 附加到 rd 命令来抑制此错误消息(以及其他错误消息):

cd /D "C:\Test" && rd /S /Q "C:\Test" 2> nul

如果要恢复原始工作目录,请使用 pushd/popd 而不是 cd:

pushd "C:\Test" && (rd /S /Q "C:\Test" 2> nul & popd)

与删除和重建(如rd /S /Q "C:\test" && md "C:\Test")相比,此方法的优势在于根目录的属性、所有者和安全设置不会丢失。


或者,您可以执行以下操作,这更复杂但可以避免抑制错误:

del /S /Q "C:\Test\*.*" & for /D %%D in ("C:\Test\*") do @rm /S /Q "%%~D"

这首先删除驻留在根目录中的所有文件,然后循环遍历所有直接子目录并一个接一个地删除。根目录本身从未被触及。