Réponses:
Utiliser CALL
comme dans
CALL nameOfOtherFile.bat
Cela bloquera (interrompra) l'exécution du fichier de commandes en cours et attendra la fin de l' CALL
ed.
Si vous ne voulez pas qu'il se bloque, utilisez à la START
place.
Obtenez les détails les plus précis en utilisant CALL /?
ou à START /?
partir de l'invite cmd.
Vous pouvez simplement appeler le script batch par son nom, comme si vous exécutiez sur la ligne de commande.
Donc, supposons que vous ayez un fichier bar.bat
qui dit echo This is bar.bat!
et que vous vouliez l'appeler à partir d'un fichier foo.bat
, vous pouvez l'écrire dans foo.bat
:
if "%1"=="blah" bar
Exécutez à foo blah
partir de la ligne de commande et vous verrez:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Mais attention : lorsque vous appelez un script batch à partir d'un autre script batch, le script batch d'origine s'arrêtera de s'exécuter. Si vous souhaitez exécuter le script de traitement par lots secondaire, puis revenir au script de traitement par lots précédent, vous devrez utiliser la call
commande. Par exemple:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Si vous exécutez foo blah
sur cela, vous verrez:
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!
Vous devriez utiliser CALL
CALL batch.bat
Si vous souhaitez ouvrir le fichier de commandes dans une autre fenêtre, utilisez start
. De cette façon, vous pouvez essentiellement exécuter deux scripts en même temps. En d'autres termes, vous n'avez pas à attendre la fin du script que vous venez d'appeler. Tous les exemples ci-dessous fonctionnent:
start batch.bat
start call batch.bat
start cmd /c batch.bat
Si vous voulez attendre la fin du script, essayez start /w call batch.bat
, mais le batch.bat doit se terminer par 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
hein, je ne sais pas pourquoi, mais l'appel n'a pas fait l'affaire
call script.bat
n'est pas revenu à la console d'origine.
cmd /k script.bat
est revenu à la console d'origine.
call
, il continuera son exécution même avec une erreur dans le script appelé.