我在Test
路径中有一个名为C:\Test
的文件夹。 Test
文件夹中有多个文件和文件夹。现在,我要删除Test
文件夹中的所有内容,而不要删除Test
文件夹本身。
我一直在尝试这些命令,但是它只会删除文件,而不会删除文件夹。
del C:\Test\*
del C:\Test\*.*
我想要一个命令从Test
删除文件和子文件夹。谁能帮我。
答案 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"
这首先删除驻留在根目录中的所有文件,然后遍历所有直接子目录并一个接一个地删除。根目录本身永远不会被触及。