如何使用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)