Respuestas:
Usar CALLcomo en
CALL nameOfOtherFile.bat
Esto bloqueará (pausará) la ejecución del archivo por lotes actual, y esperará hasta que CALLse complete el ed.
Si no desea que se bloquee, utilice STARTen 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.batque 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 blahdesde 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 callcomando. Por ejemplo:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Si corres foo blahen 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.batfuncionó, no volvió a la consola original.
cmd /k script.batvolvió a la consola original.
call, continuará su ejecución incluso con un error en el script llamado.