2

Вроде нечетного параметра, но было бы полезно, если бы я мог запустить поиск, который бы возвращал только папки, содержащие один файл. Папки с 2 или более файлами не возвращаются. Можно ли это сделать в Windows? Я мог бы также жить с поиском, который возвратил файлы непосредственно.

1 ответ1

3

ОДИН способ сделать это можно с помощью встроенного скриптинга 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:\ (вероятно, необходимо запустить командный файл от имени администратора), и это, вероятно, не обнаруживает скрытые файлы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .