Risposte:
Puoi semplicemente richiamare lo script batch per nome, come se fossi in esecuzione sulla riga di comando.
Quindi, supponi di avere un file bar.batche dice echo This is bar.bat!e vuoi chiamarlo da un file foo.bat, puoi scrivere questo in foo.bat:
if "%1"=="blah" bar
Esegui foo blahdalla riga di comando e vedrai:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Ma attenzione : quando si richiama uno script batch da un altro script batch, lo script batch originale smetterà di funzionare. Se desideri eseguire lo script batch secondario e quindi tornare allo script batch precedente, dovrai utilizzare il callcomando. Per esempio:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Se corri foo blahsu quello, vedresti:
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!
Dovresti usare CALL
CALL batch.bat
Se desideri aprire il file batch in un'altra finestra, usa start. In questo modo, puoi fondamentalmente eseguire due script contemporaneamente. In altre parole, non devi aspettare che lo script che hai appena chiamato finisca. Tutti gli esempi seguenti funzionano:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Se vuoi aspettare che lo script finisca, prova start /w call batch.bat, ma batch.bat deve finire 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, non so perché, ma la chiamata non ha funzionato, il trucco
call script.batnon è tornato alla console originale.
cmd /k script.batè tornato alla console originale.
callcontinuerà la sua esecuzione anche con un errore nello script chiamato.