Double Commander

2.12. Переменные в параметрах

Содержание

1. Краткий обзор
2. Основные переменные
3. Основные суффиксы переменных
4. Нумерованный суффикс
5. Указание префикса и постфикса для каждого файла
6. Путь панели
7. Использование кавычек
8. Разделитель каталогов в конце пути
9. Список файлов
10. Суффиксы для списка файлов
11. Комбинирование суффиксов для списка файлов
12. Запуск в терминале
13. Взаимодействие
14. Прочие переменные
15. Сводная таблица со всеми переменными
16. Переменные окружения

1. Краткий обзор

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

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

Вот простой пример. Пользователь создал кнопку запуска IrfanView с переменной %p.

Пример переменной

Когда пользователь нажмёт эту кнопку, он запустит IrfanView, а переменную %p Double Commander заменит выбранным в активной панели файлом.

Вот что понимается под переменными, описанными на этой странице.

Как вы увидите далее, большинство из них начинаются со знака процента %.

Примечание: Переменные и суффиксы регистрозависимые!

2. Основные переменные

Это основные переменные, которые могут использоваться и которые связаны с текущим выбором.

По умолчанию значения переменных, содержащие пробелы и/или специальные символы автоматически экранируются: значение будет взято в двойные кавычки (в Windows) или такие символы будут предваряться "\"(в Unix-подобных системах). Если вам не нужно такое поведение, смотрите секцию Использование кавычек.

В качестве примера для каждой переменной мы используем файл C:\Users\UserName\Desktop\comment.png.

Основные переменные
ПеременнаяЧто обозначает
%p
Полное имя файла, путь + имя файла
Пример: %p = "C:\Users\UserName\Desktop\comment.png"
%f
Только имя файла, включая расширение
Пример: %f = "comment.png"
%d
Только путь, без разделителя каталогов в конце
Пример: %d = "C:\Users\UserName\Desktop"
%z
Последняя папка в пути
Пример: %z = "Desktop"
%o
Имя файла без расширения
Пример: %o = "comment"
%e
Расширение без точки
Пример: %e = "png"
%v
Имя файла с относительным к текущему каталогу путём.
Это сработает, если, например, вы вызвали внутреннюю команду cm_FlatView.
Если мы включили вид без подкаталогов в каталоге "C:\Users\UserName", то %v будет равно "Desktop\comment.png"

Для виртуальной файловой системы (открытый архив или плагин файловой системы) доступна переменная %a: строка включает в себя путь к виртуальной файловой системе (полное имя архива или имя WFX-плагина с "wfx://") и полное имя файла относительно корня виртуальной файловой системы.

Если выделено несколько файлов, эти переменные вернут значения для всех выделенных файлов в одну строку. Чтобы в любом случае получить значение только для файла под курсором, мы можем использовать нумерованный суффикс 0.

3. Основные суффиксы переменных

К упомянутым выше переменным из одной буквы мы можем добавить ещё одну букву, что позволит уточнить значение используемой переменной.

Для каждого примера предполагаем следующее:
В левой панели курсор стоит на файле "C:\LeftFolder\File.lft"
В правой панели – на "C:\RightFolder\File.rgh"
Активна правая панель.

Основные суффиксы
СуффиксЧто обозначает
s
Исходная или активная панель (независимо от того, левая или правая)
Пример: %ps = "C:\RightFolder\File.rgh"
t
Целевая или неактивная панель (независимо от того, левая или правая)
Пример: %pt = "C:\LeftFolder\File.lft"
l
Левая панель
Пример: %pl = "C:\LeftFolder\File.lft"
r
Правая панель
Пример: %pr = "C:\RightFolder\File.rgh"
p
Обе панели, сначала активная, затем пробел и далее неактивная
Пример: %pp = "C:\RightFolder\File.rgh" "C:\LeftFolder\File.lft"
b
Обе панели, сначала левая, затем пробел и далее правая
Пример: %pb = "C:\LeftFolder\File.lft" "C:\RightFolder\File.rgh"

4. Нумерованный суффикс

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

Для каждой строки таблицы предполагаем, что в активной панели открыт каталог "C:\temp\" и мы выделили двадцать шесть файлов с именем "FileA.txt", "FileB.txt" и т.д. до "FileZ.txt".

Нумерованный суффикс
СуффиксЧто обозначает
0
Файл под курсором
Пример: %ps0 = "C:\temp\FileY.txt"
1
Первый выделенный файл
Пример: %ps1 = "C:\temp\FileA.txt"
2
Второй выделенный файл
Пример: %ps2 = "C:\temp\FileB.txt"
3
Третий выделенный файл
Пример: %ps3 = "C:\temp\FileC.txt"
21
Двадцать первый выделенный файл
Пример: %ps21 = "C:\temp\FileU.txt"

5. Указание префикса и постфикса для каждого файла

Иногда в передаваемых исполняемому файлу параметрах необходимо что-то добавить перед именами файлов.

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

Обратите внимание, что описанное далее будет применяться к каждому выделенному файлу.

Для каждой строки таблицы предполагаем, что в активной панели открыт каталог "C:\Windows\Fonts" и мы выделили три файла с именами "courrier.ttf", "fixedsys.ttf" и "terminal.ttf".

Префикс и постфикс
Префикс и постфиксЧто обозначает
{}
Один набор фигурных скобок добавляет текст в фигурных скобках перед каждым выделенным файлом
Пример: %fs{+} = "+courrier.ttf" "+fixedsys.ttf" "+terminal.ttf"
{}{}
Два набора фигурных скобок добавят текст в фигурных скобках соответственно до и после каждого выделенного файла
Пример: %fs{[}{]} = "[courrier.ttf]" "[fixedsys.ttf]" "[terminal.ttf]"

6. Путь панели

Ранее мы разбирали переменные, связанные с выделенными файлами и папками.

Но мы также можем использовать переменную %D для выбора каталога конкретной панели.

Для выбора панели к этой переменной мы можем добавить букву из упомянутых выше основных суффиксов.

Для каждого примера предполагаем следующее:
В левой панели открыт каталог "C:\Reference"
В правой панели – "E:\Work"
Активна правая панель.

Путь панели
ПеременнаяЧто обозначает
%D
Одна, без суффикса, вернёт путь активной панели
Пример: "E:\Work"
%Ds
Каталог исходной или активной панели (независимо от того, левая или правая)
Пример: "E:\Work"
%Dt
Каталог целевой или неактивной панели (независимо от того, левая или правая)
Пример: "C:\Reference"
%Dl
Каталог левой панели
Пример: "C:\Reference"
%Dr
Каталог правой панели
Пример: "E:\Work"
%Z
Одна, без суффикса, вернёт имя последней папки в пути активной панели
Пример: "Work"
%Zs
Имя последней папки в пути активной панели (независимо от того, левая или правая)
Пример: "Work"
%Zt
Имя последней папки в пути неактивной панели (независимо от того, левая или правая)
Пример: "Reference"
%Zl
Имя последней папки в пути левой панели
Пример: "Reference"
%Zr
Имя последней папки в пути правой панели
Пример: "Work"

Для виртуальной файловой системы (открытый архив или плагин файловой системы) доступна переменная %A: полное имя архива или имя WFX-плагина с "wfx://".

7. Использование кавычек

Как вы видели ранее, DC возвращает результат, автоматически расставляя двойные кавычки.

Это было полезно, если в имени файла были пробелы и мы хотели передать его в качестве параметра, и чтобы все это работало.

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

Вместо добавления новых переменных, которые возвращали бы то же самое, но без кавычек, мы можем использовать те же переменные, однако необходимо добавить в строке параметров %"0, чтобы заставить DC до конца строки не расставлять кавычки автоматически.

У нас есть:

%"0 : начиная с этой позиции не брать имена файлов в кавычки
%"1 : начиная с этой позиции автоматически брать имена в кавычки
%"  : восстановить значение по умолчанию (автоматически расставлять кавычки)

Таблица ниже показывает примеры использования для файла с именем "Client List.mdb":

Примеры использования кавычек
ВыражениеРезультат
%o.zip
"Client List".zip
%"0%o.zip
Client List.zip
%"0"%o.zip"
"Client List.zip"
%"0"%o.zip" %"1%f
"Client List.zip" "Client List.mdb"

8. Разделитель каталогов в конце пути

Как вы видели ранее, DC возвращает путь без разделителя каталогов в конце.

Такое поведение также может быть изменено с помощью переменной.

У нас есть:

%/0 : путь будет возвращён без разделителя каталогов в конце
%/1 : путь будет возвращён с разделителем каталогов в конце
%/  : восстановление значения по умолчанию (без разделителя каталогов в конце)

Следующая таблица показывает примеры использования для каталога "C:\Users\UserName\Desktop":

Разделитель каталогов в конце пути
ВыражениеРезультат
%D
"C:\Users\UserName\Desktop"
%/0%D
"C:\Users\UserName\Desktop"
%/1%D
"C:\Users\UserName\Desktop\"
%/%D
"C:\Users\UserName\Desktop"

9. Список файлов

Некоторые приложения в качестве параметра могут принимать текстовый файл со списком имён файлов.

Double Commander предлагает нам переменные, которые создадут временный текстовый файл (в системном каталоге для временных файлов) со списком выделенных файлов и папок.

Список файлов
ВыражениеОписание
%L
Файл со списком полных имён выделенных файлов (путь + имя файла)
%F
Файл со списком только имён выделенных файлов, без пути
%R
Файл со списком имён выделенных файлов с относительным путём

Double Commander будет использовать системную кодировку ANSI в Windows или системную кодировку по умолчанию в Unix-подобных системах (в дистрибутивах GNU/Linux это обычно UTF-8).

При закрытии Double Commander удаляет все такие временные файлы.

10. Суффиксы для списка файлов

По умолчанию имена файлов в списке не берутся в кавычки, но если это необходимо, они могут быть добавлены.

Кроме того, есть возможность выбрать для списка файлов кодировку UTF-8 или UTF-16 LE.

Суффиксы для списка файлов
ВыражениеОписание
Q
Имена файлов в списке будут заключены в кавычки
U
Список в кодировке UTF-8
W
Список в кодировке UTF-16 LE

11. Комбинирование суффиксов для списка файлов

Вы также можете добавить ещё один суффикс, чтобы указать панель для получения списка файлов.

Возможные примеры:

Комбинирование суффиксов для списка файлов
ВыражениеОписание
%LQt
Полные имена выделенных в целевой (неактивной) панели файлов, заключённые в кавычки
%FUs
Только имена выделенных в активной панели файлов, список в кодировке UTF-8
%RQW
Имена файлов активной панели (по умолчанию) с относительным путём, в кавычках, список в кодировке UTF-16 LE

12. Запуск в терминале

В параметрах вы можете указать, что команду необходимо выполнить в терминале.

Для этого используется переменная %t.

Запуск в терминале
ВыражениеОписание
%t0
Запустить в терминале и закрыть его после завершения
%t1
Запустить в терминале и оставить его открытым

13. Взаимодействие

Существуют две переменные: одна показывает окно сообщения, вторая – окно запроса со значением по умолчанию, которое позволяет изменить параметр на лету.

Взаимодействие
ВыражениеОписание
%[сообщение]
Будет показано обычное окно сообщения с текстом между квадратными скобками
%[запрос;значение]
Будет показано окно запроса ввода параметра с его значением по умолчанию

Пример взаимодействия:

Пример взаимодействия
ВыражениеОписание
%[Убедитесь, что ThisFile.ext закрыт!]
Перед выполнением действия будет показано окно с сообщением "Убедитесь, что ThisFile.ext закрыт!".
%[Введите значение ШИРИНЫ для преобразования изображения;1024]
Перед выполнением действия будет показано окно с текстом "Введите значение ШИРИНЫ для преобразования изображения", в поле ввода будет вставлено значение по умолчанию, 1024. Введённое пользователем значение будет подставлено в то место строки, где добавлено выражение "%[запрос;значение]".

14. Прочие переменные

В этом заключительном разделе перечислены переменные, которые ещё не были представлены.

Прочие переменные
ВыражениеОписание
%%
Будет заменено на один символ процента %
%#
С этой позиции и до конца строки вместо % указателем переменной будет символ #
#%
Отмена предыдущего поведения: отсюда и до конца строки указателем переменной будет знак %
%?
До выполнения будет показана вся командная строка, с развёрнутыми значениями переменных.

%% обычно используется, если вам необходимо использовать символ % как есть: это не позволит Double Commander попытаться прочитать этот и последующие символы как переменную.

Переменная %? особенно полезна в процессе создания кнопки панели инструментов, позволяя убедиться, что все переменные возвращают ожидаемое значение и строка запуска с командой и всеми параметрами получается правильной.

Более того, вы можете что-то изменить в этом окне, непосредственно до запуска команды.

Это особенно полезно, если вы не уверены в параметрах, передаваемых приложению.

Иногда комбинация знака процента и буквы переменной может совпасть с системной переменной.

Например, если вы введёте %os%ot, ожидая объединения имён файлов в активной и неактивной панелях, вы будете удивлены, обнаружив, что это может не работать под Windows, т.к. %os% – системная переменная, в значении которой название операционной системы.

Таким образом, здесь полезно использовать %#: в данном случае вы можете ввести %##os#ot.

%# указывает DC, что с этого момента символ # эквивалентен символу процента, таким образом можно избежать пересечения с возможными системными переменными.

Это редко необходимо, но если потребуется, вы будете рады узнать, что способ обойти существует!

Далее, если потребуется, #% вернёт символу % обычное значение.

15. Сводная таблица со всеми переменными

В этом разделе нет ничего нового, однако для удобства все переменные сведены в одну таблицу.

Сводная таблица
ВыражениеОписание
%p
полное, включая путь, имя файла
%f
имя файла, с расширением
%d
путь
%z
последняя папка в пути
%o
имя файла без расширения
%e
расширение файла без точки
%v
имя файла с путём, относительным к каталогу активной панели
s
суффикс для исходной (активной) панели (пример: %ps)
t
суффикс для целевой (неактивной) панели (пример: %pt)
l
суффикс для левой панели (пример: %pl)
r
суффикс для правой панели (пример: %pr)
p
суффикс для обеих панелей, активная первая, неактивная вторая (пример: %pp)
b
суффикс для обеих панелей, левая первая, правая вторая (пример: %pb)
0
файл под курсором (пример: %ps0
1
первый выделенный файл (пример: %ps1)
2
второй выделенный файл, если есть (пример: %ps2)
3
третий выделенный файл, если есть (пример: %ps3)
21
двадцать первый выделенный файл, если есть (пример: %ps21)
{префикс}
префикс, добавляемый перед именем файла (пример: %f{+})
{префикс}{суффикс}
префикс и суффикс, добавляемые перед и после имени файла (пример: %f{[}{]})
%D
по умолчанию путь активной (исходной) панели
%Ds
путь активной (исходной) панели
%Dt
путь неактивной (целевой) панели
%Dl
путь левой панели, независимо от того, какая активна
%Dr
путь правой панели, независимо от того, какая активна
%Z
по умолчанию имя последней папки в пути активной (исходной) панели
%Zs
имя последней папки в пути активной (исходной) панели
%Zt
имя последней папки в пути неактивной (целевой) панели
%Zl
имя последней папки в пути левой панели, независимо от того, какая активна
%Zr
имя последней папки в пути правой панели, независимо от того, какая активна
%"0
с этого места не расставлять кавычки автоматически
%"1
с этого места автоматически расставлять кавычки
%"
восстанавливает поведение по умолчанию (автоматически расставлять кавычки)
%/0
путь без разделителя каталогов в конце (по умолчанию)
%/1
путь с разделителем каталогов в конце
%/
восстанавливает поведение по умолчанию (без разделителя каталогов в конце)
%L
файл со списком выделенных файлов с полными именами (путь + имя файла)
%F
файл со списком только имён выделенных файлов
%R
файл со списком выделенных файлов с относительным путём
Q
суффикс для %L, %F или %R: взять имена файлов в кавычки
U
суффикс для %L, %F или %R: список в кодировке UTF-8
W
суффикс для %L, %F или %R: список в кодировке UTF-16 LE
%t0
запустить в терминале и закрыть его после завершения
%t1
запустить в терминале и оставить его открытым
%[сообщение]
показать окно сообщения с текстом из квадратных скобок
%[запрос;значение]
показать окно запроса ввода параметра с его значением по умолчанию
%%
будет заменено на символ %
%#
с этой позиции символ # будет обрабатываться как символ %
#%
отмена предыдущего поведения, символ % будет обрабатываться как префикс переменной
%?
показать командную строку перед выполнением

16. Переменные окружения

Мы можем использовать переменные окружения в настройках Double Commander: в именах исполняемых файлов и значков на панели инструментов, именах плагинов, в избранных каталогах и т.д. Это удобный способ указать путь, если мы не хотим использовать абсолютные пути.

Double Commander поддерживает системные переменные окружения и предоставляет несколько собственных переменных окружения:

Переменные окружения
ПеременнаяОписание
%COMMANDER_EXE%
Полное имя (путь + имя файла) исполняемого файла Double Commander (символьная ссылка будет заменена на реальный файл)
%COMMANDER_PATH%
Каталог, в котором расположен исполняемый файл Double Commander
%COMMANDER_DRIVE%
Диск, на котором расположена папка Double Commander:
- Windows: буква диска (с двоеточием);
- Unix-подобные системы: точка монтирования.
%COMMANDER_INI%
Полное имя (путь + имя файла) основного файла конфигурации (doublecmd.xml)
%COMMANDER_INI_PATH%
Каталог, в котором расположены файлы конфигурации Double Commander.
%DC_CONFIG_PATH%
Каталог, в котором расположены файлы конфигурации Double Commander.

Имена переменных %COMMANDER_PATH% и %DC_CONFIG_PATH% не чувствительны к регистру и мы можем использовать символ процента % независимо от семейства операционной системы (для обратной совместимости, это удобно для кроссплатформенного приложения). Тем не менее, в Unix-подобных системах имена переменных окружения регистрозависимы и для них традиционно используется верхний регистр, поэтому использование традиционного написания может быть хорошей привычкой.

В Windows дополнительно мы можем использовать псевдопеременные окружения в формате %$Имя%, которые соответствуют стандартным системным папкам Windows (для получения значений Double Commander использует функции SHGetSpecialFolderPath и SHGetKnownFolderPath из Windows API). Это не обычные переменные окружения и они недоступны для дочерних процессов (приложений, запущенных из Double Commander), но в остальном мы можем использовать их аналогично переменным окружения. Все эти переменные собраны в меню помощника выбора пути: справа от кнопок выбора файла или каталога находится кнопка Некоторые функции для выбора подходящего пути Некоторые функции для выбора подходящего пути, описание смотрите здесь.

Все эти переменные добавлены в меню избранных каталогов (подменю Специальные каталоги).


Originally created by Rustem (dok_rust@bk.ru)

Valid HTML 4.0 Transitional CSS Valid!