跳转至

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 秒。

示例:

call cmd::net use { arg $def::var2 wait 0 rundir $def::var1 }

车轮

指定执行调用应用程序的文件夹。

可能的值:

  • 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
}

在这个示例中,调用命令生成了以下调用:

net use {Network folder} {Password} /user: {User}/persistent:no

请注意,身份验证是加密的。密码通过 ($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
}

在这个示例中,调用命令生成了以下调用:

notepad.exe {Project file}
  • 调用命令不会等待编辑器关闭。相反,脚本会在命令调用后终止,并将控制权返回给 versiondog。
  • 组件执行的工作目录(即项目文件的位置)设置为执行目录。

示例 4

Function ScriptAfterCheckInS
{
    $def::var1 = $func::getifcomponenttypeid(2691BA5A90ED4C5887D4BDD1F8C9A48, 1);
    call MyCopyScript.exe
    {
        ... some arguments
        iftrue $def::var1=1
    }
}

在此示例中,只有当签入进程涉及特定组件类型的组件时,才会调用带有所有参数的 MyCopyScript.exe

相关主题