Если вы пишете утилиту, которая будет каким-то образом взаимодействовать с инструментом поиска TC, то вам, возможно, понадобится работать с шаблонами поиска, создаваемыми этим инструментом. Шаблон - это набор настроек для поиска, но может он использоваться не только для этого - очень распространена практика настройки цветовых схем TC по таким шаблонам. Ниже дано полное описание того, как эти шаблоны хранятся. Описание действительно для Total Commander 7.0, в более старых версиях некоторые параметры и флаги могут отсутствовать.
Все шаблоны хранятся в файле wincmd.ini, в разделе [Searches]:
Описание каждого шаблона состоит из четырёх строк:
Имя_шаблона_SearchFor - условие поиска по имени файла, т.е. та строка, которая была введена в поле "Искать файлы". Имя_шаблона_SearchIn - условие по месту поиска, т.е. та строка, которая была введена в поле "Место поиска". Имя_шаблона_SearchText - текст, который должен быть найден в файлах, т.е. строка, которая была введена в поле "С текстом". Имя_шаблона_SearchFlags - набор флагов, установленных для этого поиска, т.е. перечисление установленных галочек в инструменте поиска. Здесь нужно остановиться подробнее. Каждый флаг описывается одним символом, некоторые необязательные флаги могут быть отделены вертикальной чертой ("|"). Значения обязательных флагов: 0 - флаг снят (соответствующая галочка не установлена). 1 - флаг установлен (соответствующая галочка установлена). 2 - флаг игнорируется (соответствующая галочка затенена).
Необязательные флаги (отделённые чертой) обычно содержат какую-то цифровую или текстовую информацию.
Перечисление флагов (что за какую опцию отвечает):
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_name - используемый плагин plugin_field - используемое поле этого плагина. Сохраняется оригинальное название поля, без учёта локализации.
Примечание: если имя плагина и/или поле плагина содержат в названии пробел, то шаблон plugin_name.plugin_field заключается в кавычки.
значение - искомое значение (зависит от типа поля плагина). условие - оператор, определяющий соответствие искомого значения найденному. Для полей, возвращающих числовые значения и даты используются следующие операторы:
> (больше) < (меньше) >= (больше или равно) <= (меньше или равно) = (равно) != (не равно)
Для полей, возвращающих строковые значения, используются следующие операторы:
contains - возвращённая строка содержит искомое значение !contains - возвращённая строка не содержит искомое значение cont.(case) - возвращённая строка содержит искомое значение с учётом регистра !cont.(case) - возвращённая строка не содержит искомое значение с учётом регистра = - возвращённая строка равна искомому значению != - возвращённая строка не равна искомому значению =(case) - возвращённая строка равна искомому значению с учётом регистра !=(case) - возвращённая строка не равна искомому значению с учётом региста regex - возвращённое значение равно указанному регулярному выражению
Для полей, возвращающих логическое значение, используется один оператор = (равно), при этом искомое значение может соответствовать только 1 (условие истинно) или 0 (условие ложно).
Также возможно объединение поиска по значениям нескольких плагинов. В таком случае строка имеет следующий вид:
условие_объединения принимает значения: & (логическое и), если должны выполняться все условия поиска. | (логическое или), если должно выполняться хотя бы одно условие поиска.
В одном шаблоне поиска можно объединять не более 20 условий поиска с использованием плагинов.
Этой информации более чем достаточно, чтобы разобраться, что к чему. Вы можете поэкспериментировать с сохранением шаблонов в инструменте поиска и проверить приведённые данные на сохранённых настройках, если есть такая необходимость.