2011-01-25 4 views

Répondre

153

Utilisez CALL comme dans

CALL nameOfOtherFile.bat 

Cela bloque (pause) l'exécution du fichier de traitement par lots en cours et attend que le CALL ed soit terminé. Si vous ne souhaitez pas le bloquer, utilisez START à la place.

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

+1

+ une pour détailler sur CALL/START –

1

Vous pouvez utiliser

call script.bat 

ou tout simplement

script.bat 
+1

Si vous appelez directement un autre script dans votre script, dans le cas où une commande dans le script appelé renvoie une valeur non nulle (erreur), le script callee s'arrêtera de s'exécuter aussi, où en utilisant 'call', il continuera son exécution même avec une erreur dans le script appelé. –

4

Vous devez utiliser CALL

CALL batch.bat 
0

Voici par exemple:

Vous avez a.bat:

@echo off 
if exist b.bat goto RUNB 
goto END 
:RUNB 
b.bat 
:END 

et b.bat appelé conditionnellement de a.bat:

@echo off 
echo "This is b.bat" 
18

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

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

if "%1"=="blah" bar 

Run foo blah de la ligne de commande, et vous ll voir

C:\>foo blah 

C:\>if "blah" == "blah" bar 

C:\>echo This is bar.bat! 
This is bar.bat! 

Mais méfiez-vous: Lorsque vous invoquez un script batch d'un autre script batch, le SCIP initiale du lot pt arrêtera de fonctionner. Si vous souhaitez exécuter le script de traitement par lots secondaire et 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!