有关路径的代码

以下代码用于将各种路径传递给外部程序。可用的路径代码提供了以下三个条件的所有可能组合:

  • Which path - 当前源路径或目标路径,或在双栏文件窗口中,无论其源/目标状态如何,左(上)或右(下)路径。

  • 路径必需路径不必需 - 如果需要路径,如果没有该路径,则根本不会运行命令 - 例如,当没有有效的目标文件夹时。当路径不必需时,命令仍然会被运行,并且它将表现得好像路径代码根本不存在一样。

  • 长文件名短文件名 - 短文件名对于运行 16 位程序或其它无法处理长文件名的旧版软件非常有用。

每个代码的长形式由反映这三个条件的关键字组合组成。如果长代码以**$符号结尾,则它是代码的“路径必需”形式 - 说是“需要”一个有效的路径。请注意,左和右**路径不支持“必需”形式。

长形式短形式描述

{sourcepath}

{s!}

源路径,长文件名,非必需。

{sourcepath$}

{s}

源路径,长文件名,必需。

{destpath}

{d!}

目标路径,长文件名,非必需。

{destpath$}

{d}

目标路径,长文件名,必需。

{sourcepathshort}

{ss!}

源路径,短文件名,非必需。

{sourcepathshort$}

{ss}

源路径,短文件名,必需。

{destpathshort}

{ds!}

目标路径,短文件名,非必需。

{destpathshort$}

{ds}

目标路径,短文件名,必需。

{leftpath}

{l}

左(上)路径,长文件名。

{rightpath}

{r}

右(下)路径,长文件名。

{leftpathshort}

{ls}

左路径,短文件名。

{rightpathshort}

{rs}

右路径,长文件名。

除了与当前文件窗口路径相关的路径代码之外,以下代码还允许您传递某些系统或特定于应用程序的路径的值。

长形式短形式描述

{apppath}

{p}

返回已安装应用程序的路径,如下 App Paths 列在注册表中的键。例如,{apppath|winword.exe} 将插入 Microsoft Word 的安装路径。

{apppathshort}

{ps}

已安装应用程序的路径,采用短(8.3)格式。

{alias}

{A}

返回 文件夹别名 的路径。例如,{alias|mydocuments} 将返回指向您的文档文件夹的路径。

您可以使用 {alias|libraries} 来解析库文件夹的路径;例如,{alias|libraries}/Documents 将返回“文档”库的真实(默认)路径。

{aliasshort}

{As}

文件夹别名的路径,采用短(8.3)格式。

路径代码支持以下修饰符。可以使用垂直线 (|) 将这些修饰符添加到控制代码序列中,以将文件名代码与修饰符分开 - 例如,{sourcepath|noterm} 从路径中删除尾随终止字符。可以使用其它垂直线提供多个修饰符,以将它们分开 - 例如 {sourcepath|nopath|noterm}nopathnoterm 结合在一起。

修饰符描述

escbackslash

自动转义路径中出现的所有 \,将它们变为 \。 当使用 {sourcepath} 等代码将路径插入到将对 \n 和 \ 等序列进行特殊解释的字符串中时,这可能是必要的。 例如,将源路径和目标路径添加到剪贴板的命令在单独的行上:

剪贴板 EXPANDNEWLINES SET {sourcepath|escbackslash}\n{destpath|escbackslash}.

在此示例中,如果源路径为 C:\New Folder\,则它将转换为 C:\New Folder\。如果没有转义 N 序列,它会将字母 N 从路径中删除,并将 ew Folder\ 放在单独的行上。更微妙的是,如果源路径末尾的 \ 也未转义,它将干扰示例命令中两个路径之间的 。

escforfilter

旨在将路径插入到内联过滤器定义中。 与将 escbackslashescwild 结合使用相同,但更容易记住且键入的更少。

escnl

自动转义路径中出现的所有 ,将它们变为 。 (这是上面 escbackslash 的较弱版本。您可能应该改用 escbackslash。) 当将 {sourcepath} 这样的代码用作 {dlgstring} 等对话框代码的消息文本时,使用 escnl 会有所帮助。例如,路径 C:\New Folder\ 会转换为 C:\New Folder\。如果不转义 序列,它将转换成对话框消息文本中的换行符。

escregex escregexp

自动转义路径中的任何正则表达式字符。在将路径传递给理解 正则表达式 的内部命令时使用,以防路径包含诸如 \.() 等对某些函数有特殊含义的字符。例如,{sourcepath|escregexp|noterm}C:\Accounts (2010)\ 转换为 C:\Accounts \2010\。 为方便起见,允许同时使用“regex”和“regexp”拼写,并且它们的作用相同。

escwild

自动转义路径中的任何通配符。在将路径传递给理解 标准通配符 的内部命令时使用,以防路径包含诸如 () 等对某些函数有特殊含义的字符。例如,{sourcepath|escwild|noterm}C:\Accounts (2010)\ 转换为 C:\Accounts '(2010')

nopath

仅返回路径的最终组件。例如,如果 {sourcepath} 返回 C:\Program Files\GPSoftware\Directory Opus\,则 {sourcepath|nopath} 将返回 Directory Opus\

noroot

返回没有根的路径,即没有第一个组件。例如,如果 {sourcepath} 返回 C:\Program Files\GPSoftware\Directory Opus\,则 {sourcepath|noroot} 将返回 Program Files\GPSoftware\Directory Opus\。对于 UNC 网络路径,结果将相对于共享,同时会删除计算机和共享本身。对于 FTP 路径,结果将相对于站点的根目录并排除站点本身。您可以将 noroot.. 结合使用,以获取已删除根的父路径。例如,{sourcepath|..|noroot} noshort

抑制对长于 260 个字符的路径的自动缩短。Opus 本身可以处理非常长的路径,但许多 Windows 程序不行。将非常长的路径发送至外部程序时,Opus 通常会使用较短的(8.3)版本以减少问题。使用 noshort,当你知道目标程序可以处理时,可以防止这种情况。例如,{sourcepath|noshort}

noterm

从返回的路径中去掉尾部路径分隔符。例如,{sourcepath|noterm} 可能会返回 C:\Program Files\GPSoftware\Directory Opus

subdir

替换路径中的字符,以便可以将它添加到另一个路径下方。例如,{sourcepath|subdir} 可能会返回 C;\Program Files。请注意,分号已替换冒号,允许路径用作子目录,例如,如果你想将文件从那里备份到 D:\Backups\C;\Program Files

cleanfilename

替换字符串中的所有非法文件名字符,也替换所有路径分隔符和冒号,这样该字符串就可以用作文件名而不添加任何附加路径级别。在此上下文中类似于 subdir,但它也替换路径分隔符。

cleanfilepath

替换字符串中的所有非法文件名字符,同时保留路径分隔符和冒号。(冒号仅保留在字符串开头作为驱动器号的一部分时。)当字符串可以是绝对路径时,应该使用它。(在此上下文中通常不会产生影响,因为输入应该已经是有效的文件名或路径。在剪贴板数据的情况下更有用。)

cleanfilepathrel

替换字符串中的所有非法文件名字符,也替换冒号和 "\" UNC 路径发起器,这样该字符串就可以用作另一个路径下的子目录。在此上下文中类似于 subdir,因为输入已经是文件名或路径。(与 subdir 不同,cleanfilepathrel 也可以与任意的剪贴板输入一起使用。)

wsl

以 WSL(Windows 系统 dành cho Linux)格式返回路径(例如 /mnt/c/Program Files/ 而不是 C:\Program Files)。

pair

如果相关路径有 配对文件夹,则此修饰符会返回它的配对项。你可以将它与其它修饰符结合使用,例如 {sourcepath|pair|..} 会返回该配对项的父项。

可以使用附加修饰符来覆盖配对文件夹的“如果不存在”模式。例如,你可能需要在按钮中使用它,如果配对文件夹不存在,则创建该文件夹。支持的修饰符有 pairgotoparentpairignorepairpairuseanyway

..

修改代码以引用路径的父项而不是路径本身。你可以传递多个 .. 修饰符,它们由 \ 分隔,以返回树中较高的文件夹。例如,{destpath|..\.} 会返回当前目标路径的父项的父项。

\

修改代码以引用指定路径的驱动器根目录。例如,{sourcepath|\ 可能会返回 C:\

最后更新于