Дополнение №22


Параметры получения различных списков.



При определённых задачах автоматизации в работе с файлами и папками всегда требуется передать в команду некий список объектов, над которыми будут производится заданные действия.
В Total Commander есть внутренние параметры %WL, %F, %P%S... см. Дополнение №7.
Ниже представлены параметры утилиты, которые позволяют расширить возможности получения списков.
В большинстве команд все эти параметры подключены и готовы к работе. Если в какой-то команде нет нужного параметра, вы можете сообщить об этом и он будет добавлен.

Для включения/отключения перевода относительных путей в абсолютные воспользуйтесь командой envgt

1. PS<> Список объектов каталога
2. FOLDC<> Список объектов содержимого каталогов
3. FOLDM<> Список выделенных объектов и всех объектов в подпапках
4. LISTC<> Список объектов из выделенных без дубликатов
5. LISTF<> Список заданных объектов
6. INI<> Список элементов INI файла
7. cliplist Список элементов из буфера обмена
8. FLST<> Смешанные списки объектов по заданному списку
9. [tc] Списки объектов файловых панелей Total Commander
10. TCGINFO<> Списки объектов из шаблона
 
Примечание №1 - Приоритет обработки параметров
Примечание №2 - Маска
Примечание №3 - Атрибуты


 1. Список объектов каталога: Подпараметр PS<>

PS<Path//Flag//Recursion//Mask//Include//Registr//Format//Lines> (рекомендуется), или
PS<Path!!Flag!!Recursion!!Mask!!Include!!Registr!!Format!!Lines>, где:

Path - путь к каталогу.
  Остальные параметры являются необязательными.
Flag :
  0 - получить файлы и папки (по умолчанию).
 -1 - получить папки и файлы.
  1 - только файлы.
  2 - только папки.
 -2 - только папки, включая корневой каталог.
 -3 - получить файлы и папки, включая корневой каталог.
 -4 - получить папки и файлы, включая корневой каталог.
Recursion|Attributes - см Примечание №3:
  0 - без рекурсии - корневой каталог.
 -1 - с рекурсией: глубина 125 (по умолчанию на всю глубину).
  N - глубина максимальной вложенности.
 =N - уровень вложенности (список будет получен только с этого уровня).
Mask - см Примечание №2
Include :
  0 - найти указанные в маске (по умолчанию).
  1 - найти все кроме указанных в маске.
Registr :
  0 - не учитывать регистр (по умолчанию).
  1 - учитывать регистр (для любых символов).
Format - пути в возвращаемых данных:
  1 - полный путь (по умолчанию).
  2 - имена файлов с расширением.
  3 - имена файлов без расширения.
  4 - полный путь, отсекая начальный заданный каталог Path.
Lines - получение определённых строк (путей) из списка, может иметь несколько вариантов:
  N - номер строки.
  N1,N2,...NN - список номеров, прописанных через запятую
  N:M - диапазон строк. (M-N - обратный диапазон)
  N:M,N1:M1...NN,MM - список номеров диапазонов (прямых и обратных).
При отрицательных значениях строки извлекаются относительно последней строки.






 2. Список объектов содержимого каталогов: Подпараметр FOLDC<>

FOLDC<List/cliplist//Mode//Flag//Mask//Include//Registr//Format//Lines> (рекомендуется), или
FOLDC<List/cliplist!!Mode!!Flag!!Mask!!Include!!Registr!!Format!!Lines>, где:

List - путь\к\списку\каталогов.txt или cliplist - список полных путей каталогов из буфера.
  Остальные параметры являются необязательными.
Mode|Attributes - см Примечание №3:
  0 - получить только содержимое папок.
  1 - получить и файлы (если вошли в список 0 уровня)
  2 - получить и файлы (если вошли в список 0 уровня и применить ту же маску Mask)
  3 - получить только файлы из списка 0 уровня и применить ту же маску Mask
Flag :
  0 - Файлы и папки (по умолчанию только 1-го уровня).
  1 - Только файлы.
  2 - Только папки.
  -1 - все файлы на всю глубину.
  -2 - все папки на всю глубину.
  -3 - все файлы и папки на всю глубину.
Mask - см Примечание №2
Include :
  0 - найти указанные в маске (по умолчанию).
  1 - найти все кроме указанных в маске.
Registr :
  0 - не учитывать регистр (по умолчанию).
  1 - учитывать регистр (для любых символов).
Format - пути в возвращаемых данных:
  1 - полный путь (по умолчанию).
  2 - имена файлов с расширением.
  3 - имена файлов без расширения.
Lines - получение определённых строк (путей) из списка, может иметь несколько вариантов:
  N - номер строки.
  N1,N2,...NN - список номеров, прописанных через запятую
  N:M - диапазон строк. (M-N - обратный диапазон)
  N:M,N1:M1...NN,MM - список номеров диапазонов (прямых и обратных).
При отрицательных значениях строки извлекаются относительно последней строки.






 3. Список выделенных объектов и всех объектов в подпапках: Подпараметр FOLDM<>

FOLDM<List/cliplist//Flag//Recursion//Mask//Include//Registr//Format//Lines> (рекомендуется), или
FOLDM<List/cliplist!!Flag!!Recursion!!Mask!!Include!!Registr!!Format!!Lines>, где:

List - путь\к\списку\выделенных\каталогов или cliplist - список полных путей элементов из буфера.
  Остальные параметры являются необязательными.
Flag :
  0 - получить файлы и папки, включая пути корневых папок (по умолчанию).
  1 - только файлы, включая пути корневых папок.
  2 - только папки, включая пути корневых папок.
 -3 - получить файлы и папки, НЕ включая пути корневых папок.
 -1 - только файлы, НЕ включая пути корневых папок.
 -2 - только папки, НЕ включая пути корневых папок.
Recursion|Attributes - см Примечание №3:
  0 - без рекурсии - корневой каталог.
 -1 - с рекурсией: глубина 125 (по умолчанию на всю глубину).
  N - глубина максимальной вложенности.
 =N - уровень вложенности (список будет получен только с этого уровня).
Mask - см Примечание №2
Include :
  0 - найти указанные в маске (по умолчанию).
  1 - найти все кроме указанных в маске.
Registr :
  0 - не учитывать регистр (по умолчанию).
  1 - учитывать регистр (для любых символов).
Format - пути в возвращаемых данных:
  1 - полный путь (по умолчанию).
  2 - имена файлов с расширением.
  3 - имена файлов без расширения.

Lines - получение определённых строк (путей) из списка, может иметь несколько вариантов:
  N - номер строки.
  N1,N2,...NN - список номеров, прописанных через запятую
  N:M - диапазон строк. (M-N - обратный диапазон)
  N:M,N1:M1...NN,MM - список номеров диапазонов (прямых и обратных).
При отрицательных значениях строки извлекаются относительно последней строки.






 4. Список объектов из заданных списков без дубликатов: Подпараметр LISTC<>

LISTC<List/cliplist//Flag//Recursion//Mask//Include//Registr//Format//Lines> (рекомендуется), или
LISTC<List/cliplist!!Flag!!Recursion!!Mask!!Include!!Registr!!Format!!Lines>, где:

List - путь\к\списку\списков или cliplist - список полных путей списков из буфера.
  Остальные параметры являются необязательными.
Flag :
  0 - получить файлы и папки (по умолчанию).
  1 - только файлы.
  2 - только папки.
Recursion|Attributes - см Примечание №3:
  0 - без рекурсии - корневой каталог.
 -1 - с рекурсией: глубина 125 (по умолчанию на всю глубину).
  N - глубина максимальной вложенности.
 =N - уровень вложенности (список будет получен только с этого уровня).
Mask - см Примечание №2
Include :
  0 - найти указанные в маске (по умолчанию).
  1 - найти все, кроме указанных в маске.
Registr :
  0 - не учитывать регистр (по умолчанию).
  1 - учитывать регистр (для любых символов).
Format - пути в возвращаемых данных:
  1 - полный путь (по умолчанию).
  2 - имена файлов с расширением.
  3 - имена файлов без расширения.

Lines - получение определённых строк (путей) из списка, может иметь несколько вариантов:
  N - номер строки.
  N1,N2,...NN - список номеров, прописанных через запятую
  N:M - диапазон строк. (M-N - обратный диапазон)
  N:M,N1:M1...NN,MM - список номеров диапазонов (прямых и обратных).
При отрицательных значениях строки извлекаются относительно последней строки.






 5. Список заданных объектов: Подпараметр LISTF<>

LISTF<Path1/Path2/ ... /PathN>, где:

Path1 ... PathN - полные пути объектов, разделённые /
Так же может использоваться конструкция LISTF<LISTN>, где:

LIST1, LIST2 или LISTN означает, что полные пути будут взяты из соответствующих ключей FilesList1, FilesList1 или FilesListN в TCIMG.ini в секции [Setting]. Пути в ключах разделяются /

Пример записи:

FilesList1=C:\test1.txt/C:\test2.txt/C:\test3.txt








 6. Список элементов INI файла: Подпараметр INI<>

INI<Flag//PathINI//NameSection//Key> (рекомендуется), или
INI<Flag!!PathINI!!NameSection!!Key>, где:

Flag :
  1 - все имена секций со скобками.
  2 - все имена секций без скобок.
  3 - содержимое всех секций.
  4 - содержимое секции NameSection с именем секции.
  5 - содержимое секции NameSection без имени секции.
  6 - список ключей секции NameSection.
  7 - список значений секции NameSection.
  8 - значения ключа Key секции NameSection.
  9 - имя ключа Key и его значение секции NameSection (Key=Value).
  10 - содержимое всех секций без имён секций.
  11 - содержимое всех секций (каждая секция в отдельной ячейке массива для команд sends).
  12 - содержимое всех секций без имён секций (каждая секция в отдельной ячейке массива для команд sends).

Секции возвращаются относительно заданных имён и очерёдности расположения секций в файле:
  13 - содержимое заданных секций.
  14 - содержимое заданных секций без имён секций.
  15 - содержимое заданных секций (каждая секция в отдельной ячейке массива для команд sends).
  16 - содержимое заданных секций без имён секций (каждая секция в отдельной ячейке массива для команд sends).

Секции возвращаются относительно очерёдности заданных имён:
  17 - содержимое заданных секций.
  18 - содержимое заданных секций без имён секций.
  19 - содержимое заданных секций (каждая секция в отдельной ячейке массива для команд sends).
  20 - содержимое заданных секций без имён секций (каждая секция в отдельной ячейке массива для команд sends).

  21 - список заданных ключей и их значения (Key=Value) (каждая пара в отдельной ячейке массива для команд sends).
  22 - список значений заданных ключей (Value) (каждое значение в отдельной ячейке массива для команд sends).

  23 - содержимое всех секций (построчно).

  24, 25, 26, 27 - содержимое всех секций. Flag//PathINI//RegExp//Search//Replace
RegExp - регулярное выражение:
  (если строка начинается с ??Key то регулярное выражение берётся TCIMG.ini из секции [FormatUser] из ключа Key):
  - Flag=24 - секция включается, если нет вхождения.
  - Flag=26 - секция включается, если нет вхождения (каждая секция в отдельной ячейке массива для команд sends).
  - Flag=25 - секция включается, если есть вхождение.
  - Flag=27 - секция включается, если есть вхождение (каждая секция в отдельной ячейке массива для команд sends).
Search - [необязательный] - регулярное выражение для поиска во включённой секции.
  ??Key1,Key2,...KeyN - после ?? можно прописывать один или несколько ключей через запятую из TCIMG.ini из секции [FormatUser]
Replace - [необязательный] - шаблон замены.

Секции возвращаются относительно заданного номера или нумерации (расположения секций в файле):
  28 - имена секций со скобками.
  29 - имена секций без скобок.
  30 - содержимое секций.
  31 - содержимое секций без имён секций.
  32 - содержимое секций (каждая секция в отдельной ячейке массива для команд sends).
  33 - содержимое секций без имён секций (каждая секция в отдельной ячейке массива для команд sends).

PathINI - путь к INI файлу.
NameSection - имя секции, используется при Flag=4 и выше, см. Примечания.
Key - имя ключа, используется при Flag=8, Flag=9, см. Примечания.

Примечания:

При Flag=8 и Flag=9 после Key можно прописать значение, которое будет возвращено, если указанный ключ не найден (Key//Default)

При Flag=13, ... , Flag=20 в NameSection прописываются имена секций через разделитель |

При Flag=21 и Flag=22 в Key прописываются имена ключей через разделитель | (Key1|Key2|...|KeyN)

При Flag=28, ... , Flag=33 в NameSection прописываются номер или номера секций через запятую:
  N - номер секции: 1 - первая секция в файле, 2 - 2-я секция, и.т.д.
  N1,N2,...NN - список номеров секций, прописанных через запятую
  N:M - диапазон секций.
  N:M,N1:M1...NN,MM - список номеров диапазонов.
  При отрицательных значениях секции извлекаются относительно последней секции.
  Пример: при строке 1,2,3,-3,-2,-1 извлекутся первые 3 секции и 3 последние секции файла, то же что и 1:3,-3:-1.


Flag имеет необязательные дополнительные параметры Flag|Comm|Mode, где:
  Comm - режим удаления комментариев:
    0 - не удалять комментарии (по умолчанию).
    1 - удаление всех комментариев вида ; комментарий
    2 - удаление комментариев в начале строки вида ; комментарий
    3 - удаление специальных комментариев в начале строки вида /*@комментарий - для кода html@*/
  Mode - режим удаления пустых строк:
    0 - не удалять пустые строки (по умолчанию).
    1 - удалять пустые строки.






 7. Список элементов из буфера обмена: Подпараметр cliplist

Без подпараметров







 8. Смешанные списки объектов по заданному списку: Подпараметр FLST<>

FLST<PathList>, где:

PathList - путь к списку со строками, позволяющие найти нужные элементы.
  возможные варианты строк:
  • PS<Path//...> - список объектов каталога.
  • FOLDC<List//...> - список объектов содержимого каталогов.
  • FOLDM<List//...> - список заданных объектов и всех объектов в подпапках.
  • LISTC<List//...> - список объектов из заданных без дубликатов.
  • LISTF<Path1/...> - список заданных объектов.
  • INI<Flag//...> - список элементов INI файла.
  • cliplist - список элементов из буфера обмена.
  • [tc] - списки объектов файловых панелей Total Commander.
  • TCGINFO<> - списки объектов из шаблона.
  • @Path - если строка начинается с "@", то путь объекта добавляется как есть.
  • в файле списка могут использоваться комментарии в начале строки "пробел;;пробел - комментарий".

Пример записи в файле списка:

 ;; комментарий
PS<$f207//1//0>
PS<$f210//1//-1//au3|vbs|js>
PS<%TCIMG_PATH%\Files\Ini//1//0>
@$f213\TCIMG_Russian.lng
[tc=AL]

Пример запуска:

slist=FLST<$f212\OrfoList.txt> GLOBALSLIST<a>







Примечания:


Примечание №1. Приоритет обработки параметров.

С версии 7.5 параметры PS<>, FOLDC<>, FOLDM<>, LISTC<>, LISTF<>, INI<>, [tc], TCGINFO<> в команды подключаются вместе и имеют приоритет обработки:

1) INI<>
2) [tc] см. Дополнение №12
3) TCGINFO<> см. Дополнение №31
4) LISTF<>
5) PS<>
6) FOLDC<>
7) FOLDM<>
8) LISTC<>
9) cliplist

Это позволяет первые параметры обрабатывать внутри последующих:

Пример записи:

lists=FOLDC<LISTF<%P%N\11\/%P%N\22\/%P%N\33\>//1//-4>||##path<32>

Сначала обрабатывается параметр LISTF<...>, который создаёт начальный список и передаёт его параметру FOLDC<>

Пример записи:

copys=FOLDC<PS<%P%N//2//0>//1//1>||%P%N//0||##<info=f61::>

Сначала обрабатывается параметр PS<...>, который создаёт начальный список и передаёт его параметру FOLDC<>


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Примечание №2. Маска.

Маска может быть либо полная с использованием символов "*" и "?", либо с указанием расширения файлов.
  В качестве разделителя используется символ "|". По умолчанию "*" - найти все файлы.
    Для поиска файлов без расширения используется маска ":zeroext:"
    Пример: *.ini|*.txt
  Маска шаблонов. см. Дополнение №18:
    Пример: [extnd=Arhive]
  В версии 10.8 появилась возможность вводить "прямую" маску без преобразования для имени объекта.
    Для этого перед маской необходимо прописать && , при этом подпараметр Include=0
    Пример: &&.+\.(?:(?:woff|eof|tff)(?:\d+)?)
    Пример: &&(?:.+\.exe|[^\.]+)   пример получения файлов exe и файлов без расширения
    Пример: &&(?:.+\.(?:exe|au3|html?)|[^\.]+)   пример получения файлов заданных типов и файлов без расширения
  В версии 25.4 появилась возможность вводить "прямую" маску без преобразования для пути объекта.
    Для этого перед маской необходимо прописать ## , при этом подпараметр Include=0
    Пример: ##(?:.*TCIMG_)([^.\\]*)(?:\.lng)
    Пример: ##(.*\\(?:[^\\]+\.exe|[^\\.]+))   пример получения файлов exe и файлов без расширения
    Пример: ##(.*\\(?:[^\\]+\.(?:exe|au3|html?)|[^\\.]+))   пример получения файлов заданных типов и файлов без расширения

  (*UCP) и (?i) вставляются автоматически (относительно подпараметра Registr), в начале регулярного выражения они не прописываются.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Примечание №3. Атрибуты.

String - строка из букв задаваемых атрибутов - RASHNOTC:
  "R" = READONLY (только для чтения)
  "A" = ARCHIVE (архивный)
  "S" = SYSTEM (системный)
  "H" = HIDDEN (скрытый)
  "N" = NORMAL (нормальный)
  "O" = OFFLINE (оффлайн)
  "T" = TEMPORARY (временный)
  "C" = COMPRESSED (сжатый, имеется в виду сжатие NTFS, а не ZIP)
String может иметь вид: "SH", "^SH"
  "SH" - найти системные и скрытые объекты.
  "^SH" - найти объекты кроме системных и скрытых.

Пример записи:

; в текущем каталоге найти все файлы без рекурсии, кроме системных и скрытых
sends=PS<"%P"//1//0|^SH>??-1 GLOBALSENDS<a>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru