自定义用户菜单
用户菜单用于执行外部程序或打开文档,由您定义的各个命令(“项目”)组成。每个项目包含项目名称和要执行的命令,也可以指定图标、附加参数、开始目录和执行标志。
附加参数用于指定每次启动应用程序时传递的命令行参数。例如,可以使用 $(FullName) 传递选中文件的文件名(每个选中文件执行一次用户菜单命令)。详情参见下方的变量列表。
向用户菜单添加新命令:
- 在选项菜单中选择配置...,再选择用户菜单对话框。
- 在菜单内容中选择末尾的空行。
- 输入新项目的名称。
- 按 Enter。
- 在命令框中输入要执行文件的路径和文件名。
- 点击“确定”按钮。
高级功能
用户菜单支持比较或合并文件和目录的工具。可以在参数框中使用特殊变量(详情参见下方的变量列表),向比较/合并工具传递两个文件或两个目录。例如,在"$(FileOrDirToCompareLeft)" "$(FileOrDirToCompareRight)"这段内容中指定两个完整名称,将其输入参数框,即可把面板中指定的两个文件或目录的完整名称作为参数传给比较/合并工具(在命令框中指定该工具的 .exe 文件)。在面板中为比较/合并工具指定项目的方法如下:
- 在一个面板中选中两个文件或目录;
- 先在左面板选中第一个文件或目录,再在右面板选中第二个;
- 在一个面板中先选中第一个文件或目录,再将焦点移到第二个;
- 先在左面板选中第一个文件或目录,再在右面板将焦点移到第二个(反之亦可);
- 如果两个面板中有同名文件或目录,在一个面板中将焦点移到第一个项目上,另一个面板中的同名项目就会被用作第二个。
用户菜单的命令参数可以使用选中文件和目录的列表。此时,所有选中的文件和目录仅执行一次用户菜单命令。参见下表中的 $(ListOfSelectedNames) 和 $(ListOfSelectedFullNames) 变量。
变量列表
所有变量均可从命令、参数和开始目录框右侧按钮的右键菜单中获取。
用户菜单命令会针对每个选中的文件和目录执行一次;如果没有选中项,则针对焦点所在的文件或目录执行。下表将执行用户菜单命令所针对的文件或目录称为当前文件或目录。例外:如果使用比较/合并工具的变量或选中文件和目录的列表,则所有选中项目仅执行一次用户菜单命令。
| 变量 | 说明 |
|---|---|
| $(WinDir) | Windows 目录的完整路径(例如 C:\Windows\)。 |
| $(SysDir) | 系统目录的完整路径(例如 C:\Windows\system32\)。 |
| $(SalDir) | Sally 目录的完整路径(例如 C:\Tools\Sally\)。 |
| $[ENV_VAR] | 环境变量的值(将 ENV_VAR 替换为环境变量名称)。 |
| $(FullName) | 当前文件或目录的完整名称(例如 C:\Program Files\Outlook Express)。 |
| $(Drive) | 当前文件或目录所在的驱动器(例如 C:、D: 或 \\server\share)。 |
| $(Path) | 当前文件或目录的路径(例如 \Windows\system32\)。 |
| $(Name) | 当前文件或目录的名称(例如 file.txt)。 |
| $(NamePart) | 当前文件或目录的名称部分(例如,文件名为 file.txt 时为 file)。 |
| $(ExtPart) | 当前文件或目录的扩展名(例如,文件名为 file.txt 时为 txt)。 |
| $(FullPath) | 当前文件或目录的完整路径(例如 C:\Windows\system32\)。 |
| $(DOSFullName) | 当前文件或目录的完整 DOS 名称(8.3 命名约定,例如 C:\DOCUME~1\ALLUSE~1\APPLIC~1)。 |
| $(DOSPath) | 当前文件或目录的 DOS 路径(8.3 命名约定,例如 \DOCUME~1\ALLUSE~1\)。 |
| $(DOSName) | 当前文件或目录的 DOS 名称(8.3 命名约定,例如 APPLIC~1)。 |
| $(DOSNamePart) | 当前文件或目录的 DOS 名称部分(8.3 命名约定,例如文件名为 my first document.html 时为 MYFIRS~1)。 |
| $(DOSExtPart) | 当前文件或目录的 DOS 扩展名(8.3 命名约定,例如文件名为 my first document.html 时为 HTM)。 |
| $(DOSFullPath) | 当前文件或目录的完整 DOS 路径(8.3 命名约定,例如 C:\DOCUME~1\ALLUSE~1\)。 |
| $(DOSWinDir) | Windows 目录的完整 DOS 路径(8.3 命名约定,例如 C:\Windows\)。 |
| $(DOSSysDir) | 系统目录的完整 DOS 路径(8.3 命名约定,例如 C:\Windows\system32\)。 |
| $(FullPathInactive) | 非活动(目标)面板中打开的完整路径(例如 C:\Windows\system32\)。 |
| $(FullPathLeft) | 左面板中打开的完整路径(例如 C:\Windows\system32\)。 |
| $(FullPathRight) | 右面板中打开的完整路径(例如 C:\Windows\system32\)。 |
| $(FileToCompareLeft) | 要比较/合并的第一个文件的完整名称(例如 C:\file1.txt)。如果两个文件并非来自同一面板,则使用左面板中的文件。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileToCompareRight) | 要比较/合并的第二个文件的完整名称(例如 C:\file2.txt)。如果两个文件并非来自同一面板,则使用右面板中的文件。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(DirToCompareLeft) | 要比较/合并的第一个目录的完整名称(例如 C:\dir1)。如果两个目录并非来自同一面板,则使用左面板中的目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(DirToCompareRight) | 要比较/合并的第二个目录的完整名称(例如 C:\dir2)。如果两个目录并非来自同一面板,则使用右面板中的目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileOrDirToCompareLeft) | 要比较/合并的第一个文件或目录的完整名称(例如 C:\file1.txt)。如果两个文件或目录并非来自同一面板,则使用左面板中的文件或目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileOrDirToCompareRight) | 要比较/合并的第二个文件或目录的完整名称(例如 C:\file2.txt)。如果两个文件或目录并非来自同一面板,则使用右面板中的文件或目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileToCompareActive) | 要比较/合并的第一个文件的完整名称(例如 C:\file1.txt)。如果两个文件并非来自同一面板,则使用活动(源)面板中的文件。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileToCompareInactive) | 要比较/合并的第二个文件的完整名称(例如 C:\file2.txt)。如果两个文件并非来自同一面板,则使用非活动(目标)面板中的文件。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(DirToCompareActive) | 要比较/合并的第一个目录的完整名称(例如 C:\dir1)。如果两个目录并非来自同一面板,则使用活动(源)面板中的目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(DirToCompareInactive) | 要比较/合并的第二个目录的完整名称(例如 C:\dir2)。如果两个目录并非来自同一面板,则使用非活动(目标)面板中的目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileOrDirToCompareActive) | 要比较/合并的第一个文件或目录的完整名称(例如 C:\file1.txt)。如果两个文件或目录并非来自同一面板,则使用活动(源)面板中的文件或目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(FileOrDirToCompareInactive) | 要比较/合并的第二个文件或目录的完整名称(例如 C:\file2.txt)。如果两个文件或目录并非来自同一面板,则使用非活动(目标)面板中的文件或目录。有关执行文件和目录比较/合并工具的详情,参见上文的高级功能部分。 |
| $(ListOfSelectedNames) | 活动(源)面板中选中文件和目录的名称列表。名称用空格分隔,包含空格的名称用双引号括起(例如 dir1 file.txt "my first document.html")。列表中的名称顺序与面板或查找窗口中的顺序相同。列表最长为 32771 个字符(限制概述参见本页后面的命令行长度限制)。 |
| $(ListOfSelectedFullNames) | 活动(源)面板中选中文件和目录的完整名称列表。完整名称用空格分隔,包含空格的完整名称用双引号括起(例如 C:\test\dir1 C:\test\file.txt "C:\test\my first document.html")。列表中的名称顺序与面板或查找窗口中的顺序相同。列表最长为 32771 个字符(限制概述参见本页后面的命令行长度限制)。 |
命令行长度限制
带参数命令的最大长度取决于 Windows 版本及是否通过外壳执行命令(参见通过外壳执行复选框,位于用户菜单对话框)。
通过系统命令外壳(更准确地说,使用批处理文件)执行时,带参数命令的最大长度:
| Windows 版本 | 最大长度 |
|---|---|
| Windows 2000 | 2041 |
| Windows XP | 8185 |
| Windows Vista | 8191 |
| Windows 7 | 8191 |
直接执行(不通过系统命令外壳)时,带参数命令的最大长度:
| Windows 版本 | 最大长度 |
|---|---|
| Windows 2000 | 2080 |
| Windows XP | 2080 |
| Windows Vista | 2080 |
| Windows 7 | 32764 |
备注
显示用户菜单栏时,可以通过拖放添加新的用户菜单项目。只需将应用程序或文档拖到用户菜单栏上。
另请参阅
From the Sally manual (GPL-2.0-or-later), © 1997-2023 Open Salamander Authors; © 2025-2026 Elias Bachaalany. Source: manual source (zip) · original page in the Sally repository