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

时间:2018-08-07 08:42:50

标签: cmd command-prompt del

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

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

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

我想要一个命令从Test删除文件和子文件夹。谁能帮我。

2 个答案:

答案 0 :(得分:1)

这是必须使用的命令。

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

答案 1 :(得分:1)

不可能只有一个命令,而只有一个命令行。

我会这样做:

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"

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