我找到了找到所有空目录的答案。我想做相反的查找和列出文件夹中的非空目录。文件夹仅深入一层。
@echo off
for /d /r %1 %%A in (.) do (
dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)
如何修改以上行以查找非空文件夹?
答案 0 :(得分:0)
仅使用非零的Count
标识目录。使用-Directory
开关将需要PowerShell 3.0或更高版本。
@ECHO OFF
powershell -NoProfile -Command ^
"(Get-ChildItem -Directory |" ^
"ForEach-Object { if ((Get-ChildItem $_).Count -ne 0) { $_.Name } })"
用法:
C:>CALL get-nonemptydirs.bat
d2
junk
others
t t t
xxx
答案 1 :(得分:0)
在您的特定情况下,可以使用{em>(Vista +) Dir
,而不使用Where.exe
,它具有方便的/Q
选项, (在命令提示符处输入Where /?
以获得使用信息)。
来自cmd.exe:
For /D %A In (*) Do @Where/Q "%A":*>Nul&&Echo %A
从批处理文件中:
@For /D %%A In (*) Do @Where/Q "%%A":*>Nul&&Echo %%A
反过来,只需稍作更改,即可报告不包含文件的内容:
来自cmd.exe:
For /D %A In (*) Do @Where/Q "%A":*>Nul||Echo %A
从批处理文件中:
@For /D %%A In (*) Do @Where/Q "%%A":*>Nul||Echo %%A
在上述示例中,如果括号之间的字符串包含路径,例如MyFolder\*
,"C:\Some Location\*
或..\RelPath\*
,如果您希望输出只是目录名,则可以选择使用Echo %~nxA
/ Echo %%~nxA
。
答案 2 :(得分:0)
这是一个简单的PowerShell脚本,它将查找其中包含内容的所有目录(在目录内):
((Get-ChildItem -Directory -Path "C:\PATH-TO-FOLDER" | Where {$_.PSIsContainer -eq $True}) | Where {$_.GetFiles().Count -ne 0} | select FullName).FullName
如果要将结果写入文件,只需将以下内容添加到末尾:
| out-file -FilePath "C:\PATH-TO-OUTFILE\FILE.txt"
完整脚本:
((Get-ChildItem -Directory -Path "C:\PATH-TO-FOLDER" | Where {$_.PSIsContainer -eq $True}) | Where {$_.GetFiles().Count -ne 0} | select FullName).FullName | Out-File -FilePath "C:\PATH-TO-OUTFILE\FILE.txt"