Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Поиск каталогов, содержащих файлы заданного типа

Q: Как можно найти все каталоги (и только каталоги), в которых содержатся файлы определенного типа?
Например, надо получить список каталогов, в которых есть файлы с расширением TXT.
A: Делаешь кнопку на панели инструментов:

Код кнопки
TOTALCMD#BAR#DATA:
cmd.exe /c
for /f %%i in ('dir /b /s /ad') do if exist %%i\*.txt echo %%i >> 1.txt
D:\dshell\WCMICONS.DLL,27
Поиск каталогов с *.txt

-1

И после её нажатия получаешь в файле 1.txt получаешь нужный тебе список.

P.S. Только для winnt\xp\2000\2003

Evgenych

A: Можно использовать плагин Script Content.

script.ini:

[Script]
Section=File Types In Dir

[File Types In Dir]
Script=FileTypesInDir.vbs
LongName=1
ParseDirs=1

FileTypesInDir.vbs:

Dim FSO, Fold, FilesInFold, ScanFile, FileExt
Set FSO = CreateObject("Scripting.FileSystemObject")
content = ""
If FSO.FolderExists(filename) Then
Set Fold = FSO.GetFolder(filename)
Set FilesInFold = Fold.Files
On Error Resume Next
For Each ScanFile in FilesInFold
FileExt = FSO.GetExtensionName(ScanFile.Path)
If FileExt = "" Then
FileExt = " "
End If
If Instr(1, content, FileExt, 1) = 0 Then
content = content & "," & FileExt
End If
Next
On Error GoTo 0
If Len(content) > 0 Then
content = Mid(content, 2)
End If
Set Fold = Nothing
Set FilesInFold = Nothing
End If
Set FSO = Nothing

Скрипт сделал так, что он возвращает для папок расширения файлов, перечисленные через запятую. Если файл без расширения, то я в эту строку вставляю пробел.

Т.о., при поиске из TC переходим на закладку "Плагины", ставим "Поиск с плагинами", выбираем:
Плагин = script,
Свойство = Result,
Операция = "содержит",
Значение (например) = txt.

Для ускорения поиска на закладке "Дополнительно" можно установить Атрибут - Каталог.

Batya