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

Ruh*_*wal 9 batch-file

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

任何人都能帮忙吗?

dbe*_*ham 14

@echo off
for /d /r %1 %%A in (.) do (
  dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)
Run Code Online (Sandbox Code Playgroud)

上述解决方案忽略了隐藏文件夹.我也被告知,对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
)
Run Code Online (Sandbox Code Playgroud)

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

  • @WillHuang - 我不是在寻找`^`字符,它实际上是一个匹配任何一行的原始正则表达式.`^`字符代表一行的开头.仅当FINDSTR失败时,`||`运算符才有条件地执行`echo %% ~fA`,即没有找到行,这意味着目录为空. (3认同)