Un archivo por lotes de Windows ( called.bat
o called.cmd
) puede ser llamado desde otro archivo por lotes ( caller.bat
o caller.cmd
) o cmd.exe interactiva prompt de diversas maneras:
- llamada directa:
called.bat
- usando el comando de llamada:
call called.bat
- usando el comando cmd:
cmd /c called.bat
- usando el comando de inicio:
start called.bat
Estoy bastante en problemas para diferenciar su uso previsto según su texto de ayuda: ¿cuándo usar cuál? por ejemplo, por qué podría usar el comando 'llamar' en lugar de la llamada directa. ¿Qué es diferente?
Estoy interesado en algún informe resumido que analice las 4 posibilidades (y otras si faltan) desde varios puntos de vista: casos de uso recomendados para los que están diseñados para adaptarse, proceso de generación, contexto de ejecución, entorno, procesamiento de código de retorno.
Nota: estoy usando Windows XP SP3.
fuente
start "" [options] command
Una cosa que no queda clara en los comentarios aquí: cuando llama a un archivo por lotes desde otro usando solo su nombre (Caso n. ° 1 en la pregunta original), la ejecución se detiene desde el archivo por lotes que llama. Por ejemplo, en estas líneas:
La línea 'echo Hello' (y cualquier cosa que la siga) no será llamada. Si usa la palabra clave 'call', la ejecución se reanuda después de la llamada. Entonces en este caso:
Se llamará a la línea 'echo Hello'.
Además, todas las variables establecidas en el archivo named.bat también se pasarán al proceso de llamada.
Imagine un archivo 'llamado.bat' que tiene esta línea:
Entonces,% MYVAR% estaría disponible para el archivo por lotes de llamada si usara:
Pero, no estaría usando
fuente