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.bat
che 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 blah
dalla 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 call
comando. Per esempio:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Se corri foo blah
su 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.bat
non è tornato alla console originale.
cmd /k script.bat
è tornato alla console originale.
call
continuerà la sua esecuzione anche con un errore nello script chiamato.