脚本示例:通用编辑器链接
该脚本编写方案可以优化处理不同组件类型时的工作,这些组件类型的文件扩展名相同,但要根据组件类型使用特定的编辑器打开。
为此,BeforeEdit 脚本会根据组件类型 ID 将项目文件链接到可配置的编辑器。
该脚本功能所需的文件
文件名 | 描述 | 功能性 |
---|---|---|
ScriptBeforeEdit.exe | 已在脚本包中提供 | 根据组件类型 ID 配置将项目文件链接到编辑器 |
ScriptBeforeEdit.ini | 可使用文本编辑器进行编辑 | 为特定组件类型 ID 定义 BeforeEdit 脚本 |
Editor_Mapping.script | 可使用文本编辑器进行编辑 | 脚本解释器处理的脚本 |
脚本解决方案的前提条件
- 建议:将编辑器安装在不同的计算机上,以便它们始终位于相同文件夹中的相同本地访问路径下。
- 但是,如果编辑器也安装在不同计算机的不同文件夹中,则必须在脚本中指定并配置所有可能的访问路径。
设置脚本
激活 ScriptBeforeEdit.exe
将应用程序复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。
编辑 ScriptBeforeEdit.ini
我们建议您将客户端脚本编写目录中任何现有的 ScriptBeforeEdit.ini
文件添加进去。如果该文件还不存在,请使用脚本包中的模板。
- 在 [General] 节输入从组件类型 ID 到脚本的连接,以激活编辑器映射脚本。
- 如果要链接多个不同的组件类型到脚本,则必须为每个组件类型 ID 创建一个新的条目。
- 保存该文件。
- 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。
例如:
[General]
//Component types, linking the component type ID to a specific editor.
{Component type ID}= editor_mapping
具体例子:
编辑 editor_Mapping.script
- 在文本编辑器中打开
editor_Mapping.script
文件。 - 编辑 ScriptBeforeEdit 脚本应用程序。
- 如有必要,请根据下表进行调整。
- 保存该文件。
- 将文件复制到 用于客户端自动升级的服务器脚本编写目录 选项卡。
脚本
Function ScriptBeforeEdit
{
//----------------------------------------------------
//
// en:
// Script configuration
// var1 -> Assignment (component type Id <-> editor)
// var2 -> Filter which files should be considered by the Script.
// var3 -> Formatting of the call argument to open the file in the editor
//
// en:
// Script-Configuration:
// var1 -> Mapping of Component type Id to Editor
// var2 -> specification of files which should be treated by this script.
// var3 -> formated argument to launch the selected file in the editor.
//
$def::var1 = $func::getifcomponenttypeid(<Id 1>, $func::getiffileexists(<Editor 1>) )
$def::var1 = $func::getifcomponenttypeid(<Id 2>, $func::getiffileexists(<Editor 2>) )
$def::var1 = $func::getifcomponenttypeid(<Id 3>, $func::getiffileexists(<Editor 3>) )
$def::var2 =<Filefilter specification>
$def::var3 = $vdog::specific->WorkingDir$vdog::specific->SelectedFile
//----------------------------------------------------
// en:
// Script logic
//
// en:
// Script logic
//
exit.ifemptyvar $def::var1
continue.ifselectedfilefiltermatch $def::var2
call $def::var1
{
arg $def::var3
wait 0
rundir $def::var1
}
done
}
自定义
第 17 行:
为特定组件类型 ID 分配一个特定的编辑器。
组件类型 ID 被定义为一个条件。只有当组件类型 ID 与作业的组件类型匹配时,才会将编辑器路径的定义作为值分配给 $def::var1。
因此,适用以下规则:$def::var1 = 如果组件类型 ID 匹配,则使用编辑器。
相应的脚本语法如下:$def::var1 = $func::getifcomponenttypeid(<ID n>
,<Editor n>
)。其中 <ID n>
必须替换为要与特定编辑器关联的组件类型 ID,<Editor n>
必须替换为与该组件类型关联的编辑器的绝对路径。
函数 $func::getiffileexists(...) 仅在指定的编辑器路径在本地可用时才适用。
示例:检查编辑器是否存在于本地:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD,$func::getiffileexists(C:\Program files
myeditor.exe))
示例:不检查编辑器是否存在:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Program files\myeditor.exe)
第 18、19 行:如果不需要进一步分配编辑器,可以删除这些行。配置按第 5 行进行。也可以插入更多行,以分配更多编辑器。
第 21 行:
可以在此配置文件过滤器,以确定哪些文件将由脚本链接到编辑器。示例:$def::var2 = .txt|.dat
脚本只考虑扩展名为 TXT 或 DAT 的文件。对于所有其他扩展名,脚本编写将被终止。将执行打开编辑器的标准逻辑。
示例:$def::var2 =
不过滤任何文件。脚本编写适用于每个文件。
第 23 行:
命令行的格式,即所选文件应如何在编辑器中打开。这取决于相应的编辑器。
记事本示例:$def::var3 = $vdog::specific-> WorkingDir$vdog::specific-> SelectedFile.
给另一个编辑器的示例: $def::var3 = Project:$vdog::specific-> WorkingDir$vdog::specific-> SelectedFile
第 32 行:
所有编辑器分配必须在这一行之前完成。如果在编辑器分配中尚未考虑组件类型 ID,但调用了脚本,脚本将在这一行终止。将执行打开编辑器的标准逻辑。
第 34 行:
此处将对配置的文件过滤器进行检入检查。如果当前文件符合过滤器的要求,脚本编写将继续进行,否则脚本编写将在此时中止,并由系统打开编辑器。