Uma maneira de fazer isso é usar o script interno do Windows:
Dois arquivos de texto simples precisam ser criados em uma única pasta:
search.vbs
com conteúdo (basicamente retirado de amostras de código, modificado ligeiramente por mim):
strDir = "i:\"
ignoreFolderCount = false
'*********************
set FSO = createobject("Scripting.FileSystemObject")
Set objDir = FSO.GetFolder(strDir)
getInfo objDir, ignoreFolderCount
'**********************
Sub getInfo(pCurrentDir, ignoreFolderCount)
For Each aItem In pCurrentDir.SubFolders
getInfo aItem, ignoreFolderCount
Next
if pCurrentDir.Files.Count <= 1 then
if pCurrentDir.Subfolders.Count = 0 or ignoreFolderCount then
wscript.echo pCurrentDir
end if
end if
End Sub
search_launch.bat
com conteúdo:
echo off
echo "Running process..."
cscript.exe search.vbs > search_results.txt
echo "Process complete"
pause
As duas primeiras linhas do script de pesquisa usam um caminho de pasta (a mudança é adequada) e a decisão de ignorar pastas com um arquivo que TAMBÉM tem uma subpasta. O restante apenas pesquisa recursivamente pastas e verifica a contagem de arquivos.
O arquivo em lote search_launch iniciará o script usando o console (e não o gui do windows) e redirecionará a saída (os caminhos das pastas) para um arquivo de texto chamado search_results.txt
. Este estará vazio ou terá os nomes de quaisquer pastas que correspondam aos seus critérios.
Eu recebi um "erro de acesso negado" ao usar o c:\
(provavelmente precisa executar o arquivo em lote como admin), e isso provavelmente não detecta arquivos ocultos.