Saltar a contenido

call

El comando call se puede utilizar para llamar a aplicaciones. El comando permite la siguiente configuración para llamar a una aplicación:

  • Formulación de cualquier número de argumentos call
  • Especifica si el script debe esperar al final de la aplicación cuando se llama y cuánto tiempo debe esperar
  • Especifica el directorio de ejecución
  • Condiciones para realizar o ignorar la llamada

Sintaxis

call <Application>
{
[arg <Argument>]
[arg.nomarks <Argument>]
[wait <Milliseconds>]
[rundir <absolute path>]
[iftrue <Condition>]
[iffalse <Condition>]
}

Las aplicaciones pueden ser llamadas de la siguiente manera:

  • A través del nombre de la aplicación xmlcall vdscriptEmailNotification.exe

    Info

    Si la llamada se utiliza de esta manera, la aplicación debe estar en el mismo directorio de script que el archivo SCRIPT.

  • A través de la ruta absoluta de la aplicación xmlcall C:\Windows\System32\notepad.exe

  • Mediante un comando MS-DOS xmlcall cmd::net use

El comando call puede configurarse a través del script de la siguiente manera:

arg / arg.nomarks

El siguiente valor se entrega entre comillas.

Ejemplo:

arg C:\ruta con espacios\carpeta de prueba

entrega -> " C:\ruta con espacios\carpeta de prueba "

Se puede entregar cualquier número de argumentos a la aplicación llamada a través de arg o arg.nomarks.

Los argumentos pueden contener palabras clave que el intérprete determina y completa directamente en tiempo de ejecución. Si un argumento se define con arg, la información que se entrega se escribe entre comillas (" "). Si el argumento se define con arg.nomarks, la información se entrega a la aplicación sin comillas.

Definición de argumentos en el script Entregar el argumento a la aplicación
arg C:\ruta con espacios\Prueba\ C:\ruta con espacios\Prueba\
arg.nomarks -u Username -u Username

wait

Define un tiempo de espera (en ms) para ejecutar la aplicación llamada antes de que se ejecute el siguiente comando de script.

0: El siguiente comando de script se ejecuta inmediatamente.

El valor predeterminado es 120 segundos.

Ejemplo:

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

rundir

Especifica la carpeta en la que se ejecutará la aplicación de llamada.

Valores posibles:

  • rundir {ruta absoluta al directorio}: La carpeta especificada se utiliza como directorio de ejecución.
  • rundir {ruta absoluta a un archivo}: La carpeta en la que se encuentra el archivo especificado se utiliza como directorio de ejecución.

Info

Si se omite el argumento rundir, se utiliza el directorio script como directorio de ejecución.

iftrue/iffalse

Define las condiciones que deben cumplirse para que se ejecute la llamada.

Una condición puede formularse mediante iftrue o iffalse, de modo que la llamada sólo se ejecute si la condición se cumple (iftrue) o no se cumple (iffalse). Se aplica lo siguiente:

  • Por defecto no se establece ninguna condición, es decir, la llamada se ejecuta siempre.
  • Varias condiciones están vinculadas por un AND lógico.

Info

Si se omiten los argumentos iftrue e iffalse, la llamada se ejecuta siempre.

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

En este ejemplo, el comando call genera la siguiente llamada:

ExampleApplication.exe "/Addr: {IP}" "/Account:TestAccount" "/Password:abcdef" "/DirDest: {Directory for the backup}" "/PathLog: {Log file}" "/Lang: {Language Id}"
  • El archivo ExampleApplication.exe debe estar en el directorio de scripts.
  • El {IP} se utiliza directamente desde la configuración de la tarea (normalmente una tarea UNC).
  • versiondog añade el contenido en el {Directorio para la copia de seguridad}. El contenido de este directorio se comprime y se guarda como archivo Backup.zip después de la carga.
  • El archivo {Log file} es un archivo de intercambio para que ScriptBeforeUpload escriba información en el resultado de la tarea.
  • El archivo de registro (ruta y nombre) es proporcionado por el sistema versiondog al script de carga (vea también $vdog::logfile).
  • El {ID de idioma} es completado por el sistema versiondog según el idioma actual.

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

En este ejemplo, el comando call genera la siguiente llamada:

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

Tenga en cuenta que la autenticación está cifrada. La contraseña se transfiere a la llamada a través de ($vdog::uploadjob->5004decode) y el usuario se transfiere a la llamada a través de ($vdog::uploadjob->5003decode) descifrado desde la configuración de la tarea.

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

En este ejemplo, el comando call genera la siguiente llamada:

notepad.exe {Project file}
  • El comando de llamada no espera a que se cierre el editor. En su lugar, el script finaliza tras la llamada al comando y el control se devuelve a versiondog.
  • El directorio de trabajo del componente (es decir, la ubicación del archivo de proyecto) para la ejecución se establece como directorio de ejecución.

Ejemplo 4

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

En este ejemplo, MyCopyScript.exe sólo se llama con todos los argumentos si el proceso de Check-In se refiere a un componente de un tipo de componente específico.

Contenido relacionado