The following codes are used to pass the names of selected files to external programs. The filename codes available offer all possible combinations of the following five criteria:
The long form of each code is built from a combination of keywords that reflect the five criteria. If a long code ends in a $ sign it is the "selected items required" form of the code - it is said to "need" selected items.
Long form | Short form | Description |
---|---|---|
{filepath} |
{f!} |
Passes the full path and filename of each selected item. Files are passed one at a time - a command that uses this code will be repeated once for each additional selected item. If no files are selected the command will still be run, passing an empty string for this code. |
{filepath$} |
{f} |
The "need" form of {filepath} (requires at least one selected item in the file list). |
{file} |
{o!} |
Passes the filename only of each selected item (without its path). Multiple files are passed one at a time. |
{file$} |
{o} |
The "need" form of {file}. |
{allfilepath} |
{F!} |
Passes the full path and filename of all selected items at once. The command will only be run once, no matter how many items are selected - the names of all selected items will be passed on the command line separated by spaces. You can use the sep= modifier (described below) to specify an alternative separator character. |
{allfilepath$} |
{F} |
The "need" form of {allfilepath}. |
{allfile} |
{O!} |
Passes the filename only of all selected items at once. File paths are not passed. |
{allfile$} |
{O} |
The "need" form of {allfile}. |
{filepathshort} |
{fs!} |
Passes the full path and filename of each selected item, in short (8.3) format. This is useful for running 16 bit programs or other legacy software that can't handle long filenames. |
{filepathshort$} |
{fs} |
The "need" form of {filepathshort}. |
{fileshort} |
{os!} |
Passes the filename only (no paths) of each selected item, in short (8.3) format. |
{fileshort$} |
{os} |
The "need" form of {fileshort}. |
{allfilepathshort} |
{Fs!} |
Passes the short (8.3) form of the full path and filename of all selected items at once. |
{allfilepathshort$} |
{Fs} |
The "need" form of {allfilepathshort}. |
{allfileshort} |
{Os!} |
Passes the filename only of all selected items at once, in short (8.3) format. |
{allfileshort$} |
{Os} |
The "need" form of {allfileshort}. |
{filepathdest} |
{fd!} |
Passes the full path and filename of each selected item in the destination file display. Files are passed one at a time - a command that uses this code will be repeated once for each additional selected item. If no files are selected in the destination, or there is currently no destination, the command will still be run, passing an empty string for this code. |
{filepathdest$} |
{fd} |
The "need" form of {filepathdest}. If there are no files selected in the destination, or there is currently no destination, the command will not be executed. |
{filedest} |
{od!} |
Passes the filename only of each selected item from the destination file display (without its path). Multiple files are passed one at a time. |
{filedest$} |
{od} |
The "need" form of {filedest}. |
{allfilepathdest} |
{Fd!} |
Passes the full path and filename of all selected items, from the destination file display, all at once. The command will only be run once, no matter how many items are selected - the names of all selected items will be passed on the command line separated by spaces. |
{allfilepathdest$} |
{Fd} |
The "need" form of {allfilepathdest}. |
{allfiledest} |
{Od!} |
Passes the filename only of all selected items at once, from the destination file display. File paths are not passed. |
{allfiledest$} |
{Od} |
The "need" form of {allfiledest}. |
{filepathshortdest} |
{fsd!} |
Passes the full path and filename of each selected item, in short (8.3) format, from the destination file display. This is useful for running 16 bit programs or other legacy software that can't handle long filenames. |
{filepathshortdest$} |
{fsd} |
The "need" form of {filepathshortdest}. |
{fileshortdest} |
{osd!} |
Passes the filename only (no paths) of each selected item in the destination file display, in short (8.3) format. |
{fileshortdest$} |
{osd} |
The "need" form of {fileshortdest}. |
{allfilepathshortdest} |
{Fsd!} |
Passes the short (8.3) form of the full path and filename of all selected items at once, from the destination file display. |
{allfilepathshortdest$} |
{Fsd} |
The "need" form of {allfilepathshortdest}. |
{allfileshortdest} |
{Osd!} |
Passes the filename only of all selected items at once, in short (8.3) format, from the destination file display. |
{allfileshortdest$} |
{Osd} |
The "need" form of {allfileshortdest}. |
The filename codes all support the following modifiers. These can be added to the control code sequence using a vertical bar (|) to separate the filename code from the modifier - for example, {file|noext} strips the file extension from the returned filename. Multiple modifiers can be provided using additional vertical bars to separate them - for example {file|noext|escwild} combines both noext and escwild together.
Modifier | Description | ||||||
---|---|---|---|---|---|---|---|
noext |
Strips the filename extension from filenames. For example, if {file} returned cat_photo.jpg then {file|noext} would return cat_photo. Note that if the item is a folder then its name will not be changed, even if it contains a dot, as folders are not considered to have file extensions. |
||||||
ext |
Returns only the filename extension (the opposite of noext). For example, if {file} returned cat_photo.jpg then {file|ext} would return .jpg. Note that if the item is a folder then nothing is returned, even the folder's name contains a dot. |
||||||
ext2 |
Returns the filename extension without the dot. For example, if {file|ext} returned .jpg then {file|ext2} would return jpg. |
||||||
ext=<ext> |
Replaces the original filename extension with the specified one. For example, {file|ext=tmp} would return the name of each selected file with the extension changed to .tmp. Folder names are not changed, even if they contain dots. |
||||||
escbackslash |
Automatically escapes any occurrences of \ in the filename, turning them into \\. Clipboard EXPANDNEWLINES SET {filepath|escbackslash}\n{filepathdest|escbackslash}. In this example, if the source file was C:\New Folder\test.txt then it would be converted to C:\\New Folder\\text.txt. If the \N sequence had not been escaped, it would have removed the letter N from the path and put ew Folder\text.txt on a separate line. (There are more subtle cases when dealing with folder paths, but they are less important with file paths.) |
||||||
escforfilter |
Intended for inserting paths into inline filter definitions. |
||||||
escnl |
Automatically escapes any occurrences of \n in the filename, turning them into \\n. |
||||||
escregexescregexp |
Automatically escapes any regular expression characters in the filename. Used when passing filenames to internal commands that understand regular expressions, in case a filename contains characters like \, ., ( and ) which have special meaning to some functions. For example, {file|escregexp|noext} would turn Accounts (2010).xls into Accounts \(2010\). |
||||||
escwild |
Automatically escapes any wildcard characters in the filename. Used when passing filenames to internal commands that understand standard wildcards, in case a filename contains characters like ( and ) which have special meaning to some functions. For example, {file|escwild|noext} would turn Accounts (2010).xls into Accounts '(2010'). |
||||||
file |
Redirects the filenames to a temporary text file. This is useful with external programs that can accept a list of files from a text file rather than on the command line. (In turn, that is useful because command lines have a maximum length which may limit the number of filenames you can pass directly.) The name of the temporary file is passed on the command line in place of the filenames themselves. In the text file, each filename is separated by a space. If a filename or its path contains an embedded space it will be surrounded by quotes. For example, {allfilepath|file}. |
||||||
filem |
The same as file except that each filename is written to a separate line in the text file. For example, {allfilepath|filem}. |
||||||
fileq |
The same as file except that each filename is always surrounded by quotes, whether it contains an embedded space or not. For example, {allfilepath|fileq}. |
||||||
filemq |
The same as filem except that each filename is always surrounded by quotes. For example, {allfilepath|filemq}. |
||||||
utf8 |
Forces the file written by file, filem or fileq to use UTF-8 format. For example, {allfilepath|filem|utf8}. |
||||||
ucsle |
Forces the file written by file, filem or fileq to use UCS-16LE format. For example, {allfilepath|filem|ucsle}. |
||||||
ucsbe |
Forces the file written by file, filem or fileq to use UCS-16BE format. For example, {allfilepath|filem|ucsbe}. |
||||||
urlencode |
URL-encodes the filename it adds to the command line. Useful if you want to pass the filename to the Internet in some way. For example, you could have a context menu command which does an automatic Google search for the selected filename with: https://www.google.com/search?q={file|urlencode} |
||||||
nobom |
Prevents a BOM from being written that identifies the file type. For example, {allfilepath|filem|utf8|nobom}. |
||||||
cronly |
When used with filem or filemq, makes it so the file has only CR (carriage return) characters between each line. The default is CR,LF pairs as is standard on Windows. For example, {allfilepath|filem|cronly}. |
||||||
lfonly |
When used with filem or filemq, makes it so the file has only LF (line feed) characters between each line. The default is CR,LF pairs as is standard on Windows. For example, {allfilepath|filem|lfonly}. |
||||||
nopath |
Returns only the final component of the path. For example, if {filepath} returns C:\Program Files\GPSoftware\Directory Opus\, {filepath|nopath} would return Directory Opus\. You would normally use something like {file} to get just the name of something, but using {filepath|nopath} has the subtle difference of including the \ on the end of the name when the item is a folder. |
||||||
noroot |
Removes the root (i.e. the first component) from the file's path. For example, if {filepath} returns C:\Windows\Notepad.exe, {filepath|noroot} would return Windows\Notepad.exe. With UNC network paths, the result is relative to the share, with the computer and share itself removed. With FTP paths, the result is relative to the site's root and excludes the site itself. You can combine noroot with .. to get a parent path with the root removed. For example, {filepath|..|noroot} |
||||||
noshort |
Suppresses automatic shortening of file paths which are longer than 260 characters. Opus itself can handle very long paths but many Windows programs cannot. When sending very long paths to external programs, Opus normally uses the short (8.3) versions to reduce problems. Use noshort to prevent this when you know the target program can cope. For example, {filepath|noshort}. |
||||||
noterm |
Removes the trailing path separator from folder paths. For example, {filepath} might return C:\Program Files\ whereas {filepath|noterm} would return C:\Program Files. |
||||||
notermdrive |
Similar to noterm, but also removes the trailing path separator when the resultant path is a drive root with no sub-directory. For example, both {sourcepath} and {sourcepath|noterm} might return C:\ whereas C: would be returned by {sourcepath|notermdrive}. Drive roots are a special case in Windows and generally require a trailing backslash, but there are exceptions (like the Windows subst command) where the backslash must be omitted. |
||||||
subdir |
Replaces characters in the file's path so that the full path can be added below another path. For example, {filepath|subdir} might return C;\Windows\Notepad.exe. Note that a semi-colon has replaced the colon, allowing the path to be used relative to another directory, say if you wanted to create a backup of the file called D:\Backups\C;\Windows\Notepad.exe. |
||||||
regex |
Allows testing and manipulation of the filename.
If your regular expression contains a | symbol, you should enclose the whole pattern in quotes. |
||||||
cleanfilename |
Replaces any illegal filename characters in the string, and also replaces all path separators and colons, so the string can be used as a filename without it adding any additional path levels. Similar to subdir in this context, but it also replaces path separators. |
||||||
cleanfilepath |
Replaces any illegal filename characters in the string, while leaving path separators and colons. (Colons are only left in if they are part of a drive letter at the start of the string.) Should be used when the string can be an absolute path. (Will not usually have an effect in this context, given the input should already a valid file name or path. More useful with clipboard data.) |
||||||
cleanfilepathrel |
Replaces any illegal filename characters in the string, also replacing colons and "\\" UNC path initiators, so the string can be used as a subdirectory under another path. Similar to subdir in this context, given the input is already a file name or path. (Unlike subdir, cleanfilepathrel can also be used with arbitrary clipboard input.) |
||||||
wsl |
Returns the path in WSL (Windows System for Linux) format (e.g. /mnt/c/Program Files/ instead of C:\Program Files). |
||||||
sep= |
Lets you specify an alternative separator for codes that insert multiple filenames on the one line. For example, {allfilepath} normally inserts all selected filepaths separated by spaces. You could use {allfilepath|sep=,} to have the filepaths comma-separated instead. |
||||||
.. |
Modifies the code to refer to the selected item's parent folder rather than the item itself. You can pass multiple .. modifiers separated by \ to return folders higher up the tree. For example {filepath|..\..} would return the name of the item's parent's parent. |
||||||
\ |
Modifies the code to refer to the root of the drive of the selected item. For example {filepath|\} might return C:\. |
||||||
driveletter |
Modifies the code to refer to the drive letter, on its own, at the start of the selected item's path. For example {filepath|driveletter} might return C. If the path is not relative to a drive letter, the whole path will be inserted as-is. |
||||||
drivelabel |
Modifies the code to refer to the label for the drive letter at the start of the selected item's path. For example {filepath|drivelabel} might return System. If the path is not relative to a drive letter, the whole path will be inserted as-is. |
In addition to the above codes, the following control codes are supported to provide compatibility with Windows Explorer. They can not be used in MS-DOS batch functions.
Modifier | Equivalent To |
---|---|
%1 |
{filepath} |
%2 |
{filepath} |
%L |
{filepath} |
%V |
{filepath} if anything is selected; {sourcepath} otherwise |
%* |
{allfilepath} |