如何使用Windows批处理文件列出所有空目录?

11

我希望创建一个 Windows 批处理文件,列出用户指定的根目录下所有空子目录。

有人能够提供相关帮助吗?


请查看此讨论:"如何列出空目录" - user784540
我发现有一个叫做MarkEmptyDirs的工具。以下是示例用法语法:MarkEmptyDirs.exe -d -v C:\Some\Dir - Will Huang
1个回答

18
@echo off
for /d /r %1 %%A in (.) do (
  dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)
上述解决方案忽略了隐藏文件夹。我还被告知,在使用FOR命令时,同时使用/D和/R选项存在错误,尽管我从未遇到过问题。
@echo off
dir /a /b %1 2>nul | findstr "^" >nul || echo %%~fA
for /f "eol=: delims=" %%A in ('dir /s /ad /b %1') do (
  dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)

第二种避免使用FOR /D /R的解决方案将包括隐藏文件夹。但我认为如果文件夹名称包含Unicode,则可能会失败。


这是什么意思[dir /a /b "%%~fA" 2>nul | findstr "^" >nul]?我不明白为什么你要查找"^"字符? - Will Huang
3
@WillHuang - 我不是在寻找 ^ 字符,它实际上是一个原始的正则表达式,可以匹配任何行。^ 字符表示行的开头。|| 运算符只有在 FINDSTR 失败时才有条件地执行 echo %%~fA,这意味着没有找到任何行,也就是目录为空。 - dbenham
我明白了。谢谢分享! :) - Will Huang
注意,此操作不会列出只包含空子目录的目录,因此在删除找到的空目录后可能会出现新的目录。 - user

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接