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


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



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

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


 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 :
  0 - без рекурсии - корневой каталог.
 -1 с рекурсией: глубина 125 (по умолчанию).
  N - глубина вложенности.
Mask - Маска может быть либо полная с использованием символов "*" и "?", либо с указанием расширения файлов.
  В качестве разделителя используется символ "|". По умолчанию "*" - найти все файлы.
    Для поиска файлов без расширения используется маска ":zeroext:"
    Пример: *.ini|*.txt
  В версии 10.8 появилась возможность вводить "прямую" маску без преобразования для имени объекта.
    Для этого перед маской необходимо прописать && , при этом Include=0
    Пример: &&.+\.(?:(?:woff|eof|tff)(?:\d+)?)
  В версии 25.4 появилась возможность вводить "прямую" маску без преобразования для пути объекта.
    Для этого перед маской необходимо прописать ## , при этом Include=0
    Пример: ##(?:.*TCIMG_)([^.\\]*)(?:\.lng)
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 :
  0 - получить только содержимое папок.
  1 - получить и файлы (если вошли в список 0 уровня)
  2 - получить и файлы (если вошли в список 0 уровня и применить ту же маску Mask)
  3 - получить только файлы из списка 0 уровня и применить ту же маску Mask
Flag :
  0 - Файлы и папки (по умолчанию только 1-го уровня).
  1 - Только файлы.
  2 - Только папки.
  -1 - все файлы на всю глубину.
  -2 - все папки на всю глубину.
  -3 - все файлы и папки на всю глубину.
Mask - Маска может быть либо полная с использованием символов "*" и "?", либо с указанием расширения файлов.
  В качестве разделителя используется символ "|". По умолчанию "*" - найти все файлы.
    Для поиска файлов без расширения используется маска ":zeroext:"
    Пример: *.ini|*.txt
  В версии 10.8 появилась возможность вводить "прямую" маску без преобразования для имени объекта.
    Для этого перед маской необходимо прописать && , при этом Include=0
    Пример: &&.+\.(?:(?:woff|eof|tff)(?:\d+)?)
  В версии 25.4 появилась возможность вводить "прямую" маску без преобразования для пути объекта.
    Для этого перед маской необходимо прописать ## , при этом Include=0
    Пример: ##(?:.*TCIMG_)([^.\\]*)(?:\.lng)
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 - %L - путь\к\списку\выделенных\каталогов или cliplist - список полных путей элементов из буфера.
Flag :
  0 - получить файлы и папки, включая пути корневых папок (по умолчанию).
  1 - только файлы, включая пути корневых папок.
  2 - только папки, включая пути корневых папок.
 -3 - получить файлы и папки, НЕ включая пути корневых папок.
 -1 - только файлы, НЕ включая пути корневых папок.
 -2 - только папки, НЕ включая пути корневых папок.
Recursion :
  0 - без рекурсии - корневой каталог.
 -1 с рекурсией: глубина 125 (по умолчанию).
  N - глубина вложенности.
Mask - Маска может быть либо полная с использованием символов "*" и "?", либо с указанием расширения файлов.
  В качестве разделителя используется символ "|". По умолчанию "*" - найти все файлы.
    Для поиска файлов без расширения используется маска ":zeroext:"
    Пример: *.ini|*.txt
  В версии 10.8 появилась возможность вводить "прямую" маску без преобразования для имени объекта.
    Для этого перед маской необходимо прописать && , при этом Include=0
    Пример: &&.+\.(?:(?:woff|eof|tff)(?:\d+)?)
  В версии 25.4 появилась возможность вводить "прямую" маску без преобразования для пути объекта.
    Для этого перед маской необходимо прописать ## , при этом Include=0
    Пример: ##(?:.*TCIMG_)([^.\\]*)(?:\.lng)
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 :
  0 - без рекурсии - корневой каталог.
 -1 с рекурсией: глубина 125 (по умолчанию).
  N - глубина вложенности.
Mask - Маска может быть либо полная с использованием символов "*" и "?", либо с указанием расширения файлов.
  В качестве разделителя используется символ "|". По умолчанию "*" - найти все файлы.
    Для поиска файлов без расширения используется маска ":zeroext:"
    Пример: *.ini|*.txt
  В версии 10.8 появилась возможность вводить "прямую" маску без преобразования для имени объекта.
    Для этого перед маской необходимо прописать && , при этом Include=0
    Пример: &&.+\.(?:(?:woff|eof|tff)(?:\d+)?)
  В версии 25.4 появилась возможность вводить "прямую" маску без преобразования для пути объекта.
    Для этого перед маской необходимо прописать ## , при этом Include=0
    Пример: ##(?:.*TCIMG_)([^.\\]*)(?:\.lng)
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).

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

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

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

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

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

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

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

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

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

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






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

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





Дополнение

С версии 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<>


  


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