Вроде нечетного параметра, но было бы полезно, если бы я мог запустить поиск, который бы возвращал только папки, содержащие один файл. Папки с 2 или более файлами не возвращаются. Можно ли это сделать в Windows? Я мог бы также жить с поиском, который возвратил файлы непосредственно.
1 ответ
ОДИН способ сделать это можно с помощью встроенного скриптинга Windows:
Два простых текстовых файла должны быть созданы в одной папке:
search.vbs
с содержимым (в основном взято из примеров кода, слегка измененных мной):
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
с содержанием:
echo off
echo "Running process..."
cscript.exe search.vbs > search_results.txt
echo "Process complete"
pause
Первые две строки сценария поиска принимают путь к папке (измените, чтобы соответствовать), и решение игнорировать папки с одним файлом, который также имеет подпапку. Остальное просто рекурсивно ищет папки и проверяет количество файлов.
Пакетный файл search_launch запустит скрипт, используя консоль (а не графический интерфейс Windows), и перенаправит вывод (пути к папкам) в текстовый файл с именем search_results.txt
. Это будет пустым или будет иметь имена любых папок, которые соответствуют вашим критериям.
Я получил сообщение об ошибке "Отказано в доступе" при использовании против c:\
(вероятно, необходимо запустить командный файл от имени администратора), и это, вероятно, не обнаруживает скрытые файлы.