如何使用Windows命令提示符删除空文件夹?

我需要使用Windows命令提示符从应用程序文件夹中删除所有空文件夹?

我该如何创build一个bat文件?

请帮帮我。

for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d" 

来自: http : //blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx

当然,在我做这个命令之前,先testing一下,不要删除。 另外,下面是包含带空格的文件夹的注释的修改版本:

  for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d" 

PS在博客文章中有更多的评论可以帮助你,所以一定要阅读这些之前,你尝试了这一点

你可以使用ROBOCOPY。 这是非常简单的,也可以用来删除大层次内的空文件夹。

 ROBOCOPY folder1 folder1 /S /MOVE 

这里源和目标都是folder1 ,因为你只需要删除空的文件夹,而不是将其他(必需的)文件移动到不同的文件夹。 /S选项是跳过复制(移动 – 在上述情况下)空文件夹。 文件在同一个驱动器中移动也更快。

更简单的方法是使用/ s开关来拷贝整个目录结构。 帮助/ s说复制目录和子目录除了空的。

 xcopy dirA dirB /S 

其中dirA是空文件夹的源代码。 DirB将是没有空文件夹的副本

你不需要usebackq:

 FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A" 

从相同的引用页面添加到腐蚀的答案是一个PowerShell版本http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx#8408736

Get-ChildItem -Recurse . | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item

或者更简单地说,

gci -R . | where { $_.PSISContainer -and @( $_ | gci ).Count -eq 0 } | ri

信贷去发布作者

这是上面的一个混合。 它删除比X天更早的所有文件,并删除给定path的空文件夹。 要使用只需设置天,文件夹path和驱动器

 @echo off SETLOCAL set days=30 set folderpath=E:\TEST\ set drive=E: ::Delete files forfiles -p %folderpath% -s -d -%days% -c "cmd /c del /q @path " ::Delete folders cd %folderpath% %drive% for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"` 

从命令行:(*)中的for / R / D%1执行“%1”

在(*)do rd“%% 1”中的/ R / D %% 1的batch file中,

我不知道它是否被logging为这样,但它在W2K,XP和Win 7的作品。我不知道它是否会始终工作,但它不会意外删除文件。

安装Windows的任何UNIX解释器(Cygwin或Git Bash)并运行cmd:

find / path / to / directory -empty -type d

 To find them 

find / path / to / directory -empty -type d -delete

 To delete them 

(不是真的使用Windows cmd提示符,但它很容易,需要几秒钟的时间才能运行)

 @echo off set /p "ipa= ENTER FOLDER NAME TO DELETE> " set ipad="%ipa%" IF not EXIST %ipad% GOTO notfound IF EXIST %ipad% GOTO found :found echo DONOT CLOSE THIS WINDOW md ccooppyy xcopy %ipad%\*.* ccooppyy /s > NUL rd %ipad% /s /q ren ccooppyy %ipad% cls echo SUCCESS, PRESS ANY KEY TO EXIT pause > NUL exit :notfound echo I COULDN'T FIND THE FOLDER %ipad% pause exit 

这将工作得很好。 这是删除旧文件并recursion删除空目录的最佳方法。 以下.bat文件是,

 forfiles /p [PATH] /s /m [FILE-PATTERN] /d -[DAYS] /c "cmd /c del @path" for /f "delims=" %%d in ('dir [PATH] /s /b /ad ^| sort /r') do rd "%%d" 

占位符需要replace如下(不带引号):

 [DAYS] = Max. age of the files in days, eg “10” [PATH] = Path to search for old files and empty folders, eg “C:\Backup\” [FILE-PATTERN] = Pattern that matches files to delete, eg “*.bkp” 

该脚本已经在Windows 7和Windows Server 2003下成功testing过。

好吧,只是另一个build议(对于简单的1级目录结构没有空格)我发现很有用(从http://www.pcreview.co.uk/forums/can-check-if-folder-empty-bat- file-t1468868.html ):

 for /f %a in ('dir /ad/b') do (if exist %a\* echo %a not Empty) 

要么

 for /f %a in ('dir /ad/b') do (if not exist %a\* echo %a Empty) 

因此,删除将是:

 for /f %a in ('dir /ad/b') do (if not exist %a\* rmdir %a)