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:
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:
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:
- 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.