Compartir vía


llamada

Llama a un programa por lotes desde otro sin detener el programa por lotes primario. El comando call acepta etiquetas como destino de la llamada.

Nota

La llamada no tiene ningún efecto en el símbolo del sistema cuando se usa fuera de un script o un archivo por lotes.

Sintaxis

call [drive:][path]<filename> [<batchparameters>]] 
call [:<label> [<arguments>]]

Parámetros

Parámetro Descripción
[<drive>:][<path>]<filename> Especifica la ubicación y el nombre del programa por lotes al que desea llamar. El parámetro <filename> es obligatorio y debe tener una extensión .bat o .cmd.
<batchparameters> Especifica cualquier información de la línea de comandos que el programa por lotes requiere.
:<label> Especifica la etiqueta a la que desea que salte un control de programa por lotes.
<arguments> Especifica la información de la línea de comandos que se va a pasar a la instancia nueva del programa por lotes, empezando por :<label>.
/? Muestra la ayuda en el símbolo del sistema.

Parámetros por lotes

Las referencias de argumento de script por lotes (%0, %1, …) se enumeran en las tablas siguientes.

El uso del valor %* en un script por lotes hace referencia a todos los argumentos (por ejemplo, %1, %2, %3…).

Puede usar las sintaxis opcionales siguientes como sustituciones para los parámetros por lotes (%n):

Parámetros por lotes Descripción
%~1 Expande %1 y quita las comillas circundantes.
%~f1 Expande %1 a una ruta de acceso completa.
%~d1 Expande %1 a una letra de unidad solamente.
%~p1 Expande %1 a una ruta de acceso solamente.
%~n1 Expande %1 a un nombre de archivo solamente.
%~x1 Expande %1 a una extensión de nombre de archivo solamente.
%~s1 Expande %1 a una ruta de acceso completa que contiene nombres cortos solamente.
%~a1 Expande %1 a los atributos de archivo.
%~t1 Expande %1 a la fecha y hora del archivo.
%~z1 Expande %1 al tamaño del archivo.
%~$PATH:1 Busca en los directorios enumerados en la variable de entorno PATH y expande %1 al nombre completo del primer directorio que encuentra. Si el nombre de la variable de entorno no está definido o la búsqueda no encuentra el archivo, este modificador se expande a la cadena vacía.

En la tabla siguiente, se muestra cómo puede combinar modificadores con los parámetros por lotes para obtener resultados compuestos:

Parámetro por lotes con modificador Descripción
%~dp1 Expande %1 a una letra de unidad y una ruta de acceso solamente.
%~nx1 Expande %1 a una extensión y nombre de archivo solamente.
%~dp$PATH:1 Busca en los directorios que aparecen en la variable de entorno PATH para %1 y se expande a la letra de unidad y la ruta de acceso del primer directorio que encuentra.
%~ftza1 Expande %1 para mostrar una salida similar al comando dir.

En los ejemplos anteriores, %1 y PATH se pueden reemplazar por otros valores válidos. La sintaxis %~ finaliza con un número de argumento válido. Los modificadores %~ no se pueden usar con %*.

Comentarios

  • Uso de parámetros por lotes:

    Los parámetros por lotes pueden contener cualquier información que se puede pasar a un programa por lotes, incluidas opciones de la línea de comandos, nombres de archivos, los parámetros por lotes %0 a %9 y variables (por ejemplo, %baud%).

  • Uso del parámetro <label>:

    Mediante el uso de call con el parámetro <label>, se crea un contexto de archivo por lotes y el control se pasa a la instrucción después de la etiqueta especificada. La primera vez que se encuentra el final del archivo por lotes (es decir, después de saltar a la etiqueta), el control vuelve a la instrucción después de la instrucción call. La segunda vez que se encuentra el final del archivo por lotes, se sale del script por lotes.

  • Uso de canalizaciones y símbolos de redireccionamiento:

    No use canalizaciones (|) ni símbolos de redireccionamiento (< o >) con call.

  • Realización de una llamada recursiva

    Puede crear un programa por lotes que se llame a sí mismo. Sin embargo, debe proporcionar una condición de salida. De lo contrario, los programas por lotes primarios y secundarios pueden repetirse en un bucle sin fin.

  • Uso de extensiones de comandos

    Si las extensiones de comandos están habilitadas, call acepta <label> como destino de la llamada. La sintaxis correcta es call :<label> <arguments>.

Ejemplos

Para ejecutar el programa checknew.bat desde otro programa por lotes, escriba el comando siguiente en el programa por lotes primario:

call checknew

Si el programa por lotes primario acepta dos parámetros por lotes y desea que pase esos parámetros a checknew.bat, escriba el comando siguiente en el programa por lotes primario:

call checknew %1 %2