web-dev-qa-db-fra.com

Comment puis-je exécuter un script batch à partir d'un script batch?

Comment appeler un autre script batch depuis un script batch?

Je veux qu'il s'exécute dans une instruction if.

84
Kev

Utilisez CALL comme dans

CALL nameOfOtherFile.bat

Ceci bloquera (mettra en pause) l'exécution du fichier de commandes actuel et attendra que le fichier CALLed soit terminé.

Si vous ne souhaitez pas le bloquer, utilisez plutôt START.

Obtenez les détails pratiques en utilisant CALL /? ou START /? de l'invite cmd.

199
yhw42

Vous pouvez simplement appeler le script batch par son nom, comme si vous utilisiez la ligne de commande.

Supposons donc que vous avez un fichier bar.bat ça dit echo This is bar.bat! et vous voulez l'appeler à partir d'un fichier foo.bat, vous pouvez écrire ceci dans foo.bat:

if "%1"=="blah" bar

Courir 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 méfiez-vous: Lorsque vous appelez un script de commande à partir d'un autre script de commande, le script de commande d'origine s'arrête. Si vous souhaitez exécuter le script de traitement par lots secondaire, puis revenir au script de traitement par lots précédent, vous devez utiliser la commande call. Par exemple:

if "%1"=="blah" call bar
echo That's all for foo.bat!

Si vous exécutez foo blah là-dessus, 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!
20
Dan Fabulich

Vous devriez utiliser CALL

CALL batch.bat
6
Younes TARCHOUN

Vous pouvez utiliser

call script.bat

ou juste

script.bat
2
Elijah Saounkine

Voici un 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"
1
stanik

Si vous souhaitez ouvrir le fichier de commandes dans une autre fenêtre, utilisez start. De cette façon, vous pouvez exécuter deux scripts en même temps. En d'autres termes, vous n'avez pas à attendre le script que vous venez d'appeler pour terminer. Tous les exemples ci-dessous fonctionnent:

start batch.bat
start call batch.bat
start cmd /c batch.bat

Si vous voulez attendre que le script se termine, essayez start /w call batch.bat, mais le fichier batch.bat doit se terminer par exit.

1