# Выполнение команд

В поле «Выполнить» можно указать команду, выполняемую при выборе действия «Выполнить команду». Можно указать любую команду, которая может быть выполнена в ОС Windows через меню «Пуск→Выполнить».

Также, Password Safe может передать в параметры команды имя пользователя, пароль и некоторые другие данные, описанные ниже. Это позволяет производить некоторые сложные действия, например, запустить программу удалённого доступа (например, PuTTY) и передать ей имя пользователя и пароль, связанные с элементом.

«Переменные» заменяются соответствующими значениями перед выполнением команды. Символ доллара («$») используется для указания переменных.

- Имена переменных имеют вид «$name» и являются регистрозависимыми. Имя переменной должно начинаться с буквы, в последующих символах имени можно использовать буквы и цифры. Имя переменной заканчивается перед символом отличным от буквы и цифры (например, пробел) или концом команды.

- В случае, если требуется добавить букву или цифру сразу после значения переменной, заключите имя переменной в фигурные скобки, например, «${varname}строка».
- Для использования знака «$» как обычного символа в строке (чтобы он не указывал на имя переменной), экранируйте его символом «\». Например, «\$text» рассматривается как «$text», а не как переменная с именем «text».
- Для того чтобы вставить «\» перед символом «$», экранируйте его с помощью символа «\». «\\$name» рассматривается как «\$name» в конечном тексте, при этом «$name» считается переменной. Символ «\» не нужно экранировать, если он не идёт перед символом «$».
- После переменной может указываться числовое значение в квадратных скобках, называемое «индексом». Значение индекса «n» может предваряться символом «+» или «-», например, [-2], [2] или [+2]. Password Safe считает нулевой индекс соответствующим значению всего поля.

- В настоящий момент распознаются следующие переменные:

- Связанные с приложением:

appdir | Каталог, содержащий исполняемый файл Password Safe (pwsafe.exe). См. примечания 1 и 2.

- Связанные с контейнером:

dbdir | Каталог, содержащий текущий контейнер. См. примечания 1 и 2.
fulldb | Полный путь, имя файла и расширение текущего контейнера. См. примечание 2.
dbname | Имя файла текущего контейнера.
dbextn | Расширение файла текущего контейнера.

- Связанные с текущим элементом:

g или group | Группа (полный путь до корня, разделённый точками).
G или GROUP | Имя группы, содержащей текущий элемент.
t или title | Заголовок
u или user | Имя пользователя
p или password | Пароль
e или email | e-mail (электронная почта)
a или autotype | Автонабор. См. примечание 5.
url | Ссылка
n или n[0] | Содержание всего поля заметок (также: notes или notes[0]). См. примечание 3.
n[i] или notes[i] | i-я строка заметок, считая с начала: i=1 — первая строка, i=2 — вторая и т. д. См. примечание 4.
n[-i] или notes[-i] | i-я строка заметок, считая с конца: i=1 — последняя строка, i=2 — предпоследняя и т. д. См. примечание 4.

Заметки |
--- | ---
1 | Имена каталогов (appdir или dbdir) не содержат конечного обратного слэша («\»). Не забудьте добавить его, если это требуется в параметрах программы.
2 | В значении переменной (включая имена каталогов и полные пути) могут присутствовать пробелы. Для корректного выполнения команды может потребовать заключение переменной в кавычки.
3 | Если поле заметок состоит из нескольких строк, значение переменной также будет содержать имеющиеся там символы возврата каретки (CR) и переноса строки (LF). Это может привести к ситуации когда CR и/или LF будут расценены как нажатие клавиши «Enter».
4 | При указании одиночных строк заметок конечные символы CR и/или LF отбрасываются.
5 | Если в команде присутствует переменная автонабора, операция автонабора будет выполнена, как только окно приложения станет активным. При этом переменная и её значение будут убраны из строки параметров. Данная переменная может быть написана в любом месте поля «Выполнить», так как она указывает, что должен сделать Password Safe после выполнения команды. В отличие от других переменных, она может принимать дополнительный параметр для изменения значения по умолчанию. Используется следующий формат (в указанных примерах «$a» можно заменить на «$autotype»):
$a | Использовать значение из текущего элемента.
${a} | Использовать значение из текущего элемента (фигурные скобки нужны, если за «$a» следует текст).
$a(значение) | Использовать строку автонабора, указанную в круглых скобках.
${a}(значение) | Использовать строку автонабора, указанную в круглых скобках.

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

    '$dbdir\\$dbname.txt'

Обратите внимание, что для того, чтобы «$dbname» было распознано как переменная, обратный слэш экранирован.

В ОС Windows также можно подставлять переменные окружения (как обычно, имя переменной окружается символами «%», например, %variable_name%). Пример: «%windir%\notepad.exe» преобразуется в «C:\Windows\notepad.exe» (зависит от каталога установки Windows). Текущие значения переменных можно определить, запустив «cmd.exe» и выполнив в консоли команду «set» без параметров. Имена неопознанных переменных окружения остаются без изменений. Например, "%xyz%\notepad.exe" останется равным "%xyz%\notepad.exe", если переменная окружения «xyz» не определена. Примечание. В ОС Windows переменные окружения регистронезависимы.

### Примеры

- Для подключения к myHost с именем пользователя и пароля из текущего элемента через PuTTY, нужно указать в поле «Выполнить» следующее значение:

      "C:\Program Files\PuTTY\putty.exe" -ssh ${u}@myHost 22 -pw $p

- Открытие указанного контейнера в новом экземпляре Password Safe (спасибо Дейву (Dave) за пример):

       ${autotype}(\p\n)"${appdir}\pwsafe.exe" \UNC\path\to\database.psafe3

- Чтобы данный пример заработал, убедитесь, что разрешён запуск нескольких экземпляров на вкладке «Сервис→Настройки→Система».
- Также может оказаться удобным изменить «Действие по двойному клику» для этого элемента на «Выполнить команду».