Comment appeler un autre script batch à partir d'un script batch?Comment exécuter un script batch à partir d'un script batch?
Je souhaite qu'il s'exécute dans une instruction if
.
Comment appeler un autre script batch à partir d'un script batch?Comment exécuter un script batch à partir d'un script batch?
Je souhaite qu'il s'exécute dans une instruction if
.
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.
+ une pour détailler sur CALL/START –
Vous pouvez utiliser
call script.bat
ou tout simplement
script.bat
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é. –
Vous devez utiliser CALL
CALL batch.bat
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"
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!
essayé avez-la même chose en cours d'exécution à distance .......... ce qui est arrivé à ce si oui? – pkm