An entry's 'Run Command' field can contain a command that will
be run when the Run Command action is selected. The command can be anything
that can be executed by typing it in the "Start → Run" box
of your computer.
In addition, Password Safe is able to pass arguments to the command
such as the entry's username, password, etc., as described below. This
allows you to 'program' fairly complex actions, such as invoking a remote access program
(PuTTY,
for example) and passing it the username and password associated with the entry.
In general, 'variables' are replaced with values associated with them
before being passed to the computer for execution. The dollar ('$')
sign is used to indicate a variable.
Variables are specified as '$name' and are case sensitive. Variable names always start with an
alphabetic character and the remaining characters are alphanumeric. The variable name is
terminated either by encountering a non-alphanumeric character (such as a space) or the end of the Run Command.
To use a variable immediately followed by an alphanumeric character in the Run Command, enclose the variable's name in curly brackets e.g., '${varname}string'.
To use a '$' in the string as normal text (not indicating that the following text is a variable
name), escape it using a back-slash ('\') e.g. '\$text' becomes '$text' and is
not treated as a variable called 'text'.
To use a back-slash before a '$' as a back-slash, escape it with a back-slash e.g. '\\$name'
becomes '\$name' in the resulting text and '$name' is treated as a variable. A
back-slash does not have to be escaped unless it precedes a '$' indicating a
following variable.
A variable may be followed by a numerical value within square brackets is called an 'Index
value'. The index value 'n' can be preceded by '+' or '-' e.g.
[-2] or [2] or [+2]. Password Safe treats an index
that equates to zero as meaning the entire field.
The following variables are currently recognised:
Application related:
appdir
Directory containing the Password Safe application. See notes
1 & 2 below.
Current database related:
dbdir
Directory of current open database. See notes 1 & 2 below.
fulldb
Full path, filename and extension of current open database. See
note 2 below.
dbname
Current open database filename.
dbextn
Current open database extension.
Current entry related:
g or group
Group (full tree structure back to root with groups separated by periods).
The complete Notes field (also: notes or notes[0]). See note 3
below.
n[i] or notes[i]
ith line of the Notes field counting from the start, i.e. i=1
is the first line, i=2 means the second line etc. See note 4 below.
n[-i] or notes[-i]
ith line of the Notes field counting from the end, i.e. i=1 is
the last line, i=2 means the penultimate line etc. See note 4 below.
Notes
1
Directory values (appdir or dbdir) do not have an ending '\'.
Remember to add this if you need it in your Run Command.
2
The contents of variables (including directory and full path
values) may contain blanks. You may need to enclose the result in quotes in
your Run Command for correct execution.
3
If the Notes field contains more than one line, it will include
any embedded carraige return (CR) or line feed (LF). This may cause issues when executed as CR and/or LF
will be taken as 'enter'.
4
Any trailing CR and/or LF are removed from single lines selected
from the Notes field.
5
If the AutoType variable is present in the Run Command,
AutoType will be performed once the target window is active. The variable and
its value, if present, will be removed from the string that is executed. This
variable can appear anywhere in the Run Command as it only specifies what
Password Safe will do after the command string has been executed. Unlike other variables,
this one will be able to take a value to override the entry's current
value. The format is as follows ('$autotype' can replace '$a' in the
following examples):
$a
Use current entry value.
${a}
Use current entry value (used if text immediately follows the '$a' variable).
$a(value)
Use autotype string specified between the round brackets.
${a}(value)
Use autotype string specified between the round brackets.
Note: Be sure to add quotes around your string if required e.g., if your
database directory contains spaces, to access a text file in it based on your
open database name, you would need the following (with quotes):
'$dbdir\\$dbname.txt'
Notice that the backslash is escaped so that the '$dbname' is recognised as a
variable.
On Windows, the normal substitution of environmental variables
(specified as %variable_name%) is performed. For example:
'%windir%\notepad.exe' could become (depending on your installation)
'C:\Windows\notepad.exe'. Current values set in your environment can
be determined by running 'cmd.exe' and issuing the 'set' command without any
parameters. Any unknown environmental variable is left unchanged in the
Run Command e.g., %xyz%\notepad.exe remains as %xyz%\notepad.exe if
variable 'xyz' is not set. Note: Windows environmental variables are not
case sensitive.
Example
The following Run Command will cause the
Putty
program to connect to myHost giving the entry's username and password: