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

Batch file 如何使用windows批处理文件列出所有空目录?,batch-file,Batch File,我想创建一个windows批处理文件,其中列出用户指定根目录下的所有空子目录 有人能帮忙吗 @echo off for /d /r %1 %%A in (.) do ( dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA ) 上述解决方案将忽略隐藏的文件夹。我还被告知在FOR中同时使用/D和/R选项是有缺陷的,尽管我从来没有遇到过问题 第二个解决方案是避免使用/D/R,它将包括隐藏文件夹。但我相信,如果文件夹名称包

我想创建一个windows批处理文件,其中列出用户指定根目录下的所有空子目录

有人能帮忙吗

@echo off
for /d /r %1 %%A in (.) do (
  dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)
上述解决方案将忽略隐藏的文件夹。我还被告知在FOR中同时使用/D和/R选项是有缺陷的,尽管我从来没有遇到过问题



第二个解决方案是避免使用/D/R,它将包括隐藏文件夹。但我相信,如果文件夹名称包含Unicode,它可能会失败。

查看此讨论:我发现有一个名为。下面是示例用法语法:MarkEmptyDirs.exe-d-v C:\Some\dir[dir/a/b“%%~fA”2>nul | findstr“^”>nul]这是什么意思?我不明白你为什么要找出“^”字符?@WillHuang-我不是在找
^
字符,它实际上是一个匹配任何行的基本正则表达式。
^
字符表示行的开头。
|
操作符只有在FINDSTR失败时才有条件地执行
echo%%~fA
,也就是说没有找到行,这意味着目录是空的。我明白了。我现在明白了。谢谢分享!:)请注意,这不会列出只包含空子目录的目录,因此在删除找到的空目录后,可能会出现新目录。
@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
)