Você pode usar o PowerShell! Este one-liner fará o truque:
Get-ChildItem 'C:\Users\dave\Desktop\shows' -Recurse -Directory | Where-Object {[System.IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | ForEach-Object {$_.FullName}
A primeira parte (começando com Get-ChildItem
) encontra todos os subdiretórios daquela pasta. A segunda parte ( Where-Object
) filtra esses resultados para aqueles que não possuem entradas de sistema de arquivos de qualquer tipo, nem arquivos nem pastas. Finalmente, a parte ForEach-Object
apresenta o nome completo da pasta encontrada.
Podemos condensar essa linha um pouco usando aliases e abreviações:
gci -Dir -r | ? {[IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | % {$_.FullName}
Por fim, você pode chamá-lo por lote:
powershell -command "gci -Dir -r | ? {[IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | % {$_.FullName}"