Total Commander Knowledge Base

Есть вопрос?

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

Структура раздела Searches

Если вы пишете утилиту, которая будет каким-то образом взаимодействовать с инструментом поиска TC, то вам, возможно, понадобится работать с шаблонами поиска, создаваемыми этим инструментом. Шаблон - это набор настроек для поиска, но может он использоваться не только для этого - очень распространена практика настройки цветовых схем TC по таким шаблонам.
Ниже дано полное описание того, как эти шаблоны хранятся. Описание действительно для Total Commander 7.0, в более старых версиях некоторые параметры и флаги могут отсутствовать.

Все шаблоны хранятся в файле wincmd.ini, в разделе [Searches]:

Структура раздела Searches

Описание каждого шаблона состоит из четырёх строк:

Имя_шаблона_SearchFor - условие поиска по имени файла, т.е. та строка, которая была введена в поле "Искать файлы".
Имя_шаблона_SearchIn - условие по месту поиска, т.е. та строка, которая была введена в поле "Место поиска".
Имя_шаблона_SearchText - текст, который должен быть найден в файлах, т.е. строка, которая была введена в поле "С текстом".
Имя_шаблона_SearchFlags - набор флагов, установленных для этого поиска, т.е. перечисление установленных галочек в инструменте поиска. Здесь нужно остановиться подробнее.

Каждый флаг описывается одним символом, некоторые необязательные флаги могут быть отделены вертикальной чертой ("|"). Значения обязательных флагов:

0 - флаг снят (соответствующая галочка не установлена).
1 - флаг установлен (соответствующая галочка установлена).
2 - флаг игнорируется (соответствующая галочка затенена).

Необязательные флаги (отделённые чертой) обычно содержат какую-то цифровую или текстовую информацию.

Перечисление флагов (что за какую опцию отвечает):

Имя_шаблона_SearchFlags=A|BCDEFGHIJKLM|N|O|P|Q|R|S|T|U|VWYZ|a

A = Поиск в архивах.
B = Только слова целиком.
C = Учитывать регистр символов.
D = В кодировке ASCII.
E = Файлы, НЕ содержащие этот текст.
F = Только в выделенных файлах/каталогах.
G = NTFS-сжатый файл (используется только при включённом поиске по атрибутам).
H = Hex-код.
I = Unicode.
J = Использовать регулярные выражения в имени файла.
K = Использовать регулярные выражения в тексте файла.
L = NTFS-шифрованный файл (используется только при включённом поиске по атрибутам).
M = UTF8.
N = если присутствует, содержит начальную дату/время искомых файлов.
O = если присутствует, содержит конечную дату/время искомых файлов.
P = если присутствует, содержит возраст искомых файлов.
Q = если присутствует, содержит тип возраста искомых файлов. Принимает значения: -1 (минуты), 0 (часы), 1 (дни), 2 (недели), 3 (месяцы), 4 (года).
R = если присутствует, содержит значение поиска по размеру файла: 0 (равно), 1 (больше), 2 (меньше).
S = значение размера файла (используется только вместе с ключом R).
T = единица измерения: 0 (байты), 1 (килобайты), 2 (мегабайты).
U = если флаг присутствует, то включён поиск по атрибутам. При этом флаг представляет собой секцию из пяти других флагов (abcde), указывающих на атрибуты: a - архивный, b - только для чтения, c - скрытый, d - системный, e - каталог. Значения флагов: 0 - флаг снят (искомый файл не должен иметь этот атрибут), 1 - флаг установлен (искомый файл должен иметь этот атрибут), 2 - флаг игнорируется.
V = поиск дубликатов.
W = поиск дубликатов по содержимому (автоматически устанавливается флаг Y).
Y = поиск дубликатов по размеру.
Z = поиск дубликатов по имени.

Примечание: учитываются только следующие комбинации флагов: 1000 (дубликаты по имени и размеру), 1001 (дубликаты по имени), 1010 (дубликаты по размеру), 1100 (дубликаты по имени, размеру и содержимому), 1110 (дубликаты по размеру и содержимому). Остальные комбинации считаются взаимоисключающими и игнорируются.

a = глубина вложенности поиска (от 0 до 100, 0 - поиск только в текущем каталоге), если флаг отсутствует - вложенность неограничена.

Также, в случае использования в шаблоне значений из контентных плагинов, может добавляться пятая строка:

Имя_шаблона_plugin - описание правил использования значений из контентных плагинов. Если эта строка присутствует, то флаг "Поиск с плагинами" установлен. Общий вид строки:


Имя_шаблона_plugin="plugin_name.plugin_field условие значение"

где:

plugin_name - используемый плагин
plugin_field - используемое поле этого плагина. Сохраняется оригинальное название поля, без учёта локализации.

Примечание: если имя плагина и/или поле плагина содержат в названии пробел, то шаблон plugin_name.plugin_field заключается в кавычки.

значение - искомое значение (зависит от типа поля плагина).
условие - оператор, определяющий соответствие искомого значения найденному. Для полей, возвращающих числовые значения и даты используются следующие операторы:

> (больше)
< (меньше)
>= (больше или равно)
<= (меньше или равно)
= (равно)
!= (не равно)

Для полей, возвращающих строковые значения, используются следующие операторы:

contains - возвращённая строка содержит искомое значение
!contains - возвращённая строка не содержит искомое значение
cont.(case) - возвращённая строка содержит искомое значение с учётом регистра
'!cont.(case) - возвращённая строка не содержит искомое значение с учётом регистра

= - возвращённая строка равна искомому значению

!= - возвращённая строка не равна искомому значению
=(case) - возвращённая строка равна искомому значению с учётом регистра
!=(case) - возвращённая строка не равна искомому значению с учётом регистра
regex - возвращённое значение равно указанному регулярному выражению

Для полей, возвращающих логическое значение, используется один оператор = (равно), при этом искомое значение может соответствовать только 1 (условие истинно) или 0 (условие ложно).

Также возможно объединение поиска по значениям нескольких плагинов. В таком случае строка имеет следующий вид:

Имя_шаблона_plugin="plugin_name.plugin_field условие значение условие_объединения plugin_name.plugin_field условие значение"

условие_объединения принимает значения:

& (логическое и), если должны выполняться все условия поиска.
| (логическое или), если должно выполняться хотя бы одно условие поиска.

В одном шаблоне поиска можно объединять не более 20 условий поиска с использованием плагинов.

Этой информации более чем достаточно, чтобы разобраться, что к чему. Вы можете поэкспериментировать с сохранением шаблонов в инструменте поиска и проверить приведённые данные на сохранённых настройках, если есть такая необходимость.

Павел Дубровский