Comment appeler un autre script de traitement par lot à partir d’un script de traitement par lots?
Je veux qu’il s’exécute dans une instruction if
.
Utilisez 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
.
Si vous ne voulez pas le bloquer, utilisez START
place.
Obtenez les détails Nitty Gritty en utilisant CALL /?
ou START /?
à partir de l’invite cmd.
Vous pouvez simplement appeler le script de traitement par nom, comme si vous exécutiez sur la ligne de commande.
Donc, supposons que vous avez un fichier bar.bat
qui dit echo This is bar.bat!
et vous voulez l’appeler depuis un fichier foo.bat
, vous pouvez écrire ceci dans foo.bat
:
if "%1"=="blah" bar
Exécutez foo blah
depuis 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 méfiez – vous : lorsque vous appelez un script de traitement par lots à partir d’un autre script de traitement par lots, le script de commandes d’origine cesse de s’exécuter. Si vous souhaitez exécuter le script de traitement secondaire puis revenir au script de traitement précédent, vous devez utiliser la commande d’ call
. Par exemple:
if "%1"=="blah" call bar echo That's all for foo.bat!
Si vous exécutez foo blah
sur cela, vous verriez:
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
Vous pouvez utiliser
call script.bat
ou juste
script.bat
Voici l’exemple:
Vous avez un .bat:
@echo off if exist b.bat goto RUNB goto END :RUNB b.bat :END
et b.bat appelé conditionnellement à partir de a.bat:
@echo off echo "This is b.bat"