¿Cómo llamo a otro script por lotes desde dentro de un script por lotes?
Quiero que se ejecute en una if
declaración.
¿Cómo llamo a otro script por lotes desde dentro de un script por lotes?
Quiero que se ejecute en una if
declaración.
Usar CALL
como en
CALL nameOfOtherFile.bat
Esto bloqueará (pausará) la ejecución del archivo por lotes actual, y esperará hasta que CALL
se complete el ed.
Si no desea que se bloquee, utilice START
en su lugar.
Obtenga los detalles esenciales utilizando CALL /?
o START /?
desde el indicador de cmd.
Puede invocar el script por lotes por su nombre, como si estuviera ejecutando en la línea de comandos.
Entonces, suponga que tiene un archivo bar.bat
que dice echo This is bar.bat!
y desea llamarlo desde un archivo foo.bat
, puede escribir esto en foo.bat
:
if "%1"=="blah" bar
Ejecuta foo blah
desde la línea de comando y verás:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Pero cuidado : cuando invoca un script por lotes desde otro script por lotes, el script por lotes original dejará de ejecutarse. Si desea ejecutar el script por lotes secundario y luego volver al script por lotes anterior, tendrá que usar el call
comando. Por ejemplo:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Si corres foo blah
en eso, verás:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
Deberías usar CALL
CALL batch.bat
Puedes usar
call script.bat
o solo
script.bat
call
, continuará su ejecución incluso con un error en el script llamado.He aquí un ejemplo:
Tienes un murciélago:
y b.bat llamado condicionalmente desde a.bat:
fuente
Si desea abrir el archivo por lotes en otra ventana, utilice
start
. De esta manera, básicamente puede ejecutar dos scripts al mismo tiempo. En otras palabras, no tiene que esperar a que termine el script que acaba de llamar. Todos los ejemplos a continuación funcionan:Si desea esperar a que termine el script, intente
start /w call batch.bat
, pero el archivo batch.bat tiene que terminar conexit
.fuente
Ejecutar en paralelo en ventanas de comando separadas en estado minimizado
dayStart.bat
Ejecutar secuencialmente en la misma ventana
release.bat
fuente
eh, no sé por qué, pero la llamada no
call script.bat
funcionó, no volvió a la consola original.cmd /k script.bat
volvió a la consola original.fuente