如何递归删除空文件夹?

如何递归删除空文件夹?

如何递归删除空文件夹?

Thumbs.db如果目录中没有目录且除了无用的自动生成的文件( 、.DS_Store等)之外不存在任何文件,则认为“空”为真。

答案1

下面是一个命令行,它将删除所有其实是空的(即零文件)文件夹及其下方的目录:

for /f "delims=" %i in ('dir /ad /s /b') do @rd "%i"

基本上,这会从当前目录开始递归列出所有目录,然后尝试删除每个目录。rd默认情况下,该命令不会删除非空目录,因此您的文件应该是安全的。

答案2

尝试一下这个:删除空目录 - CNET Download.com

空目录文件夹很烦人,但通常不会引起太大的担忧。尽管如此,它们还是会随着时间的推移而积累,而 Remove Empty Directories 是一个聪明而快速的解决方案。这个小程序会向您显示一个几乎空白的窗格和一个图标键,帮助您了解结果。顶部有一个对话框,用于指定要搜索的特定文件夹或驱动器,但默认情况下它会检查您的 C 驱动器。

答案3

for /f "delims=" %i in ('dir /ad /s /b') do @rd "%i"

  —鲍比麦克

@bobbymcr 的答案有效,但是需要运行 (n-1) 次最大目录深度才能确保没有空目录。这是因为将按降序排列目录for,并尝试删除父目录rddir它已失去了它的孩子们。

由于rd将仅删除已经先将孩子清空sort,然后一次性将空巢从树上移除。

创建一个[meow].bat文件,并从要删除的目录中运行它。第一个参数是可在需要时使用的备用临时文件名。

:: Asserts the default tempfile name if none is specified.
IF "%1"=="" (
set __tempfile=meow.tmp
) ELSE (
set __tempfile=%1
)
echo %__tempfile%

:: Checks to see that it won't destroy an existing file
IF NOT EXIST %__tempfile% (
:: Gets list of directories in descending depth.
dir /ad /b /s > %__tempfile%
:: Removes empty directories specified in the list sorted in reverse order
for /f "delims=" %%i in ('sort /R %__tempfile%') do @rd "%%i"
:: Deletes tempfile
del %__tempfile%
) ELSE (
:: if the tempfile already exists.
@ECHO Tempfile already exists, please delete %__tempfile% and try again.
)

答案4

贝尔维德可以做到这一点,但你需要比“无用”更具体,才能设置正确的规则。

相关内容