Respostas:
Você pode simplesmente invocar o script em lote pelo nome, como se estivesse executando na linha de comando.
Então, suponha que você tenha um arquivo bar.bat
que diz echo This is bar.bat!
e deseja chamá-lo de um arquivo foo.bat
, você pode escrever isso em foo.bat
:
if "%1"=="blah" bar
Execute a foo blah
partir da linha de comando e você verá:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Mas cuidado : quando você invoca um script em lote de outro script em lote, o script em lote original para de ser executado. Se quiser executar o script de lote secundário e depois retornar ao script de lote anterior, você terá que usar o call
comando. Por exemplo:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Se você correr foo blah
nisso, verá:
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!
Você deve usar CALL
CALL batch.bat
Se você deseja abrir o arquivo em lote em outra janela, use start
. Dessa forma, você pode basicamente executar dois scripts ao mesmo tempo. Em outras palavras, você não precisa esperar o script que acabou de chamar terminar. Todos os exemplos abaixo funcionam:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Se você quiser esperar a conclusão do script, tente start /w call batch.bat
, mas o batch.bat precisa terminar com 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
huh, eu não sei por que, mas a chamada não
call script.bat
funcionou, não retornou ao console original.
cmd /k script.bat
retornou ao console original.
call
, ele continuará sua execução mesmo com um erro no script chamado.