Respuestas:
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
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:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Si desea esperar a que termine el script, intente start /w call batch.bat
, pero el archivo batch.bat tiene que terminar con exit
.
dayStart.bat
start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat
release.bat
call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat
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.
call
, continuará su ejecución incluso con un error en el script llamado.