call
调用命令可用于调用应用程序。该命令可启用以下配置来调用应用程序:
- 拟定任意数量的调用参数
- 指定脚本在被调用时是否需要等待应用程序的结束以及等待的时间
- 指定执行目录
- 何时拨打或忽略电话的条件
语法
call <Application>
{
[arg <Argument>]
[arg.nomarks <Argument>]
[wait <Milliseconds>]
[rundir <absolute path>]
[iftrue <Condition>]
[iffalse <Condition>]
}
可按以下方式调用申请表:
-
通过应用程序名称
xmlcall vdscriptEmailNotification.exe
Info
如果以这种方式使用调用,应用程序必须与 SCRIPT 文件位于同一脚本目录下。
-
通过应用程序
xmlcall C:\Windows\System32\notepad.exe
的绝对路径 - 通过 MS-DOS 命令
xmlcall cmd::net use
可以通过脚本对呼叫命令进行如下配置:
arg / arg.nomarks
以下数值用引号传递。
示例:
argC:\path with spaces\test folder\
passes -> "C:\path with spaces\test folder\
"
可通过 arg 或 arg.nomarks 向被调用程序传递任意数量的参数。
参数可以包含由解释器在运行时直接确定和填充的关键字。如果参数用 arg 定义,则传递的信息用引号("")封装。如果参数用 arg.nomarks 定义,则传递给应用程序的信息不带引号。
脚本中的参数定义 | 将参数传递给应用程序 |
---|---|
argC:\path with spaces\Test\ | C:/path with spaces\Test\ |
arg.nomarks -u 用户名 | -用户名 |
等待
定义在执行下一条 Script 命令前执行被调用应用程序的超时(以毫秒为单位)。
0:立即执行下一条脚本命令。
默认值为 120 秒。
示例:
车轮
指定执行调用应用程序的文件夹。
可能的值:
- rundir {目录的绝对路径}: 将指定的文件夹用作执行目录。
- rundir {文件的绝对路径}:将指定文件所在的文件夹作为执行目录。
Info
如果省略 rundir 参数,脚本目录将被用作执行目录。
iftrue/iffalse
定义执行调用必须满足的条件。
可以通过 iftrue 或 iffalse 来设置条件,这样只有在条件满足(iftrue)或不满足(iffalse)时才会执行调用。以下情况适用:
- 默认情况下不设置条件,即始终执行调用。
- 几个条件通过逻辑 AND 连接起来。
Info
如果省略 iftrue 和 iffalse 参数,调用将始终执行。
示例 1
Function ScriptBeforeUpload
{
call ExampleApplication.exe
{
arg /Addr: $vdog::uploadjob->5002
arg /Account:TestAccount
arg /Password:abcdef
arg /DirDst: $vdog::specific->dirbackup
arg /PathLog: $vdog::logfile
arg /Lang: $vdog::language
}
done
}
在这个示例中,调用命令生成了以下调用:
ExampleApplication.exe "/Addr: {IP}" "/Account:TestAccount" "/Password:abcdef" "/DirDest: {Directory for the backup}" "/PathLog: {Log file}" "/Lang: {Language Id}"
ExampleApplication.exe
文件必须存在于脚本目录中。- {IP} 直接从作业的作业配置中获取(通常是 UNC 作业)。
<备份目录>
由 versiondog 系统填充。这是一个目录,上传后其内容将打包保存为 Backup.zip。` 是 ScriptBeforeUpload 向作业结果写入信息的交换文件。 - 日志文件(路径和名称)由 versiondog 系统提供给上传脚本(另请参阅 $vdog::logfile )。
- {Language ID} 由 versiondog 系统根据当前语言自动填充。
例 2
Function ScriptBeforeUpload
{
def::var1 = \\$vdog::uploadjob->5002\d$\Data
call cmd::net use
{
arg.nomarks $def::var1
arg.nomarks $vdog::uploadjob->5004decode
arg.nomarks /user:$vdog::uploadjob->5003decode
arg.nomarks /persistent:no
}
dir.copy
{
source $def::var1
dest $vdog::specific->dirbackup\Data
spec *.prd|*.dat
}
dir.copy
{
source $def::var1\ReferenceImages
dest $vdog::specific->dirbackup\Data\ReferenceImages
}
call cmd::net use
{
arg.nomarks $def::var1
arg.nomarks /delete
}
done
}
在这个示例中,调用命令生成了以下调用:
请注意,身份验证是加密的。密码通过 ($vdog::uploadjob->5004decode) 传输到调用,用户通过 ($vdog::uploadjob->5003decode) 从作业配置中解密传输到调用。
例 3
Function ScriptBeforeEdit
{
// some logic to determine the editor
$def::var1 = <determine editor, e.g. notepad.exe>
//exit script and continue with default logic, if no editor could be determined
exit.ifemptyvar $def::var1
// open selected file directly in editor
$def::var2 = $vdog::specific->WorkingDir$vdog::specific->SelectedFile
// launch editor, but don't wait
call $def::var1
{
arg $def::var2
wait 0
rundir $def::var1
}
// editor is launched, no default logic needed
done
}
在这个示例中,调用命令生成了以下调用:
- 调用命令不会等待编辑器关闭。相反,脚本会在命令调用后终止,并将控制权返回给 versiondog。
- 组件执行的工作目录(即项目文件的位置)设置为执行目录。
示例 4
Function ScriptAfterCheckInS
{
$def::var1 = $func::getifcomponenttypeid(2691BA5A90ED4C5887D4BDD1F8C9A48, 1);
call MyCopyScript.exe
{
... some arguments
iftrue $def::var1=1
}
}
在此示例中,只有当签入进程涉及特定组件类型的组件时,才会调用带有所有参数的 MyCopyScript.exe
。