【问题标题】:How to list all the empty directories using windows batch file?如何使用 Windows 批处理文件列出所有空目录?
【发布时间】:2012-03-27 06:59:07
【问题描述】:

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

有人可以帮忙吗?

【问题讨论】:

标签: batch-file


【解决方案1】:
@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] 这是什么意思?我不明白你为什么要找出“^”字符?
  • @WillHuang - 我不是在寻找 ^ 字符,它实际上是一个可以匹配任何行的原始正则表达式。 ^ 字符代表一行的开始。 || 运算符有条件地执行 echo %%~fA 仅当 FINDSTR 失败时,即没有找到行,这意味着目录是空的。
  • 我明白了。我现在知道了。感谢分享! :)
  • 请注意,这不会列出仅包含空子目录的目录,因此删除找到的空目录后可能会出现新目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 2012-07-27
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
相关资源
最近更新 更多