自定义用户菜单

用户菜单用于执行外部程序或打开文档,由您定义的各个命令(“项目”)组成。每个项目包含项目名称和要执行的命令,也可以指定图标、附加参数、开始目录和执行标志。

附加参数用于指定每次启动应用程序时传递的命令行参数。例如,可以使用 $(FullName) 传递选中文件的文件名(每个选中文件执行一次用户菜单命令)。详情参见下方的变量列表。

向用户菜单添加新命令:

  1. 在选项菜单中选择配置...,再选择用户菜单对话框。
  2. 在菜单内容中选择末尾的空行。
  3. 输入新项目的名称。
  4. 按 Enter。
  5. 在命令框中输入要执行文件的路径和文件名。
  6. 点击“确定”按钮。

高级功能

用户菜单支持比较或合并文件和目录的工具。可以在参数框中使用特殊变量(详情参见下方的变量列表),向比较/合并工具传递两个文件或两个目录。例如,在"$(FileOrDirToCompareLeft)" "$(FileOrDirToCompareRight)"这段内容中指定两个完整名称,将其输入参数框,即可把面板中指定的两个文件或目录的完整名称作为参数传给比较/合并工具(在命令框中指定该工具的 .exe 文件)。在面板中为比较/合并工具指定项目的方法如下:

  1. 在一个面板中选中两个文件或目录;
  2. 先在左面板选中第一个文件或目录,再在右面板选中第二个;
  3. 在一个面板中先选中第一个文件或目录,再将焦点移到第二个;
  4. 先在左面板选中第一个文件或目录,再在右面板将焦点移到第二个(反之亦可);
  5. 如果两个面板中有同名文件或目录,在一个面板中将焦点移到第一个项目上,另一个面板中的同名项目就会被用作第二个。

用户菜单的命令参数可以使用选中文件和目录的列表。此时,所有选中的文件和目录仅执行一次用户菜单命令。参见下表中的 $(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