如何递归删除文件

时间:2011-01-21 06:55:19

标签: windows cmd

我有目录结构/ foo / bar / fooBar / ..我想编写一个Windows命令,我可以提到foo目录之前的路径,它会在/ foo中递归删除所有文件和目录,但它不应该删除foo目录。

我一直在使用rmdir /q /s [path to foo],但此命令也会删除foo目录。如果有任何命令可以告诉我。

9 个答案:

答案 0 :(得分:47)

rd /s /q /path/to/foo
md /path/to/foo

答案 1 :(得分:9)

del /f /s /q DirectoryWhichContainsFilesToDelete/\*

这将删除文件夹DirectoryWhichContainsFilesToDelete中的所有文件而不删除文件夹本身。 玩得开心:))

答案 2 :(得分:6)

我也一直在摸这个。创建一个使用rmdir的for循环很容易,但它留下了长名称中有空格的文件夹。可以操作目录列表并获取8.3文件名,但这是一个更简单的解决方案。

然后创建一个空文件夹;

robocopy \empty_folder \folder_with_sub_folders /PURGE

所有子文件夹&文件将被删除。

答案 3 :(得分:5)

del X /f /s /q 
rd X /s /q 

这会删除ROOt目录。再次使用

 md X

或先复制一份。

否则你将不得不做批量funkiness

 dir X /ad /b

将为您提供X的直接子目录列表。您可以解决其余的

答案 4 :(得分:3)

我正在寻找一个简单的命令,以递归方式删除目录中的所有文件,但保持目录结构不变。所以,也许这可能很有趣;)

for /f "delims=" %i in ('dir /B /S /A:-DH') do @del /F /Q /A:H "%i"

命令'dir / B / S / A:-D'在没有'dir'摘要报告(/ B)的情况下递归地(/ S)列出当前目录中的文件(/ A:-D)。 'for'循环遍历每个完整行(/ delims =)并执行delete命令,强制和安静。我另外使用隐藏标志(/ H)来列出和删除一些神秘的(例如thumbs.db)文件。

答案 5 :(得分:2)

deltree / foo / *应该可以正常工作。

答案 6 :(得分:2)

尝试使用Powershell:

powershell -Command "Remove-Item '\foo\*' -Recurse -Force"

答案 7 :(得分:1)

我以前在批处理文件中使用过它。它使用for循环来导航目录结构。

这里我从树中删除cvs子目录,从一个分支复制到另一个分支时需要。

@echo off
if /I exist CVS. rd CVS /s /q >nul
for /F %%z in ('dir cvs /ad /s /b') do echo %%z && rd /s /q %%z
echo Batchfile %0 is complete

答案 8 :(得分:0)

为了防止删除foo目录,请在删除之前将目录更改为foo,例如:

cd c:\ foo rd / s / q c:\ foo

这将删除foo下的所有文件和文件夹但不删除foo。将显示一条错误消息,如下所示“该进程无法访问该文件,因为该文件正由另一个进程使用。”