【发布时间】:2012-03-27 06:59:07
【问题描述】:
我想创建一个 Windows 批处理文件,其中列出了用户指定的根目录下存在的所有空子目录。
有人可以帮忙吗?
【问题讨论】:
-
我发现有一个工具叫MarkEmptyDirs。以下是示例用法语法: MarkEmptyDirs.exe -d -v C:\Some\Dir
标签: batch-file
我想创建一个 Windows 批处理文件,其中列出了用户指定的根目录下存在的所有空子目录。
有人可以帮忙吗?
【问题讨论】:
标签: batch-file
@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,它可能会失败。
【讨论】:
^ 字符,它实际上是一个可以匹配任何行的原始正则表达式。 ^ 字符代表一行的开始。 || 运算符有条件地执行 echo %%~fA 仅当 FINDSTR 失败时,即没有找到行,这意味着目录是空的。