外部控制码
在命令中,可以通过外部控制码来获取选中文件、当前文件夹等的名称或路径,以及当前时间、剪贴板内容,甚至可以显示对话框来输入文本或选择文件。
虽然外部控制码的名称中有“外部”,但它实际上可以与任何命令一起使用,包括 DOpus 内置命令/用户命令和外部的命令行程序。
详见 外部控制码。
选中文件
在通过 {file}
或 {filepath}
等控制码获取选中文件时,获取到的文件并不一定与当前实际选中的文件相同。这是因为多行命令在执行过程中不会刷新选中文件,除非执行了 Select
或 Rename
命令。
比如,CreateFolder
命令在创建文件夹后会选中新创建的文件夹,但并不会刷新 {file}
:
// 选中文件A.txt
Output {file}
CreateFolder "新文件夹B"
// 选中文件A.txt
Output {file}
如果需要刷新 {file}
,可以添加一条 Select .
命令,例如:
// 选中文件A.txt
Output {file}
CreateFolder "新文件夹B"
Select .
// 新文件夹B
Output {file}
注意,即使没有直接使用 {file}
,一些默认对选中文件执行操作的命令也会隐式使用到它,导致问题。比如在粘贴文件后,为新粘贴的文件添加标记:
Clipboard PASTE
Properties ADDLABEL SETLABEL="蓝色"
由于 Clipboard PASTE
不会刷新选中文件,Properties ADDLABEL
实际上无法对粘贴后的文件进行操作,导致失败。可以添加 Select .
来进行刷新:
Clipboard PASTE
Select .
Properties ADDLABEL SETLABEL="蓝色"
但是添加 Select .
以后,Properties ADDLABEL
实际上也只会对粘贴的第一个文件生效。这是因为 Select .
在某些情况下只会刷新 {file}
为多个选中文件中的第一个,而不是所有文件。在这种情况下需要通过脚本进行手动刷新:
function OnClick(clickData)
{
var cmd = clickData.func.command;
cmd.RunCommand('Clipboard PASTE');
// 刷新选中文件
cmd.ClearFiles();
clickData.func.sourcetab.Update();
cmd.AddFiles(clickData.func.sourcetab.selected);
cmd.RunCommand('Properties ADDLABEL SETLABEL="蓝色"');
}
最后更新于