868 votes

Comment exécuter plusieurs fichiers .BAT à l'intérieur d'un même fichier .BAT ?

J'essaie de faire en sorte que mon commit-build.bat pour exécuter d'autres fichiers .BAT dans le cadre de notre processus de construction.

Contenu de commit-build.bat :

"msbuild.bat"
"unit-tests.bat"
"deploy.bat"

Cela semble assez simple, mais commit-build.bat n'exécute que le premier élément de la liste ( msbuild.bat ).

J'ai exécuté chacun des fichiers séparément sans aucun problème.

4 votes

@sean - Vous n'avez pas besoin d'installer le paquetage Cygwin complet pour que les utilitaires de ligne de commande fonctionnent. Retirez simplement toutes les dlls Cygwin du paquetage, placez-les dans un répertoire patché, mettez tous vos outils dans un autre répertoire patché et vous êtes prêt à fonctionner.

0 votes

En supposant que chacun de ces fichiers ne sont que des lots, pourquoi ne pas les mettre dans un seul grand fichier et utiliser la fonction de délai d'attente pour permettre à chaque fois de démarrer.

30voto

Jay Points 774

Vous appelez plusieurs lots dans le but de compiler un programme. Je prends pour acquis que : 1) si une erreur se produit, le programme dans le lot donnera un niveau d'erreur. 2) si une erreur se produit, vous voulez en être informé.

for %%b in ("msbuild.bat" "unit-tests.bat" "deploy.bat") do call %%b|| exit /b 1

De cette façon, tous les lots sont appelés dans l'ordre, mais s'arrêteront à chaque erreur, laissant l'écran tel quel pour que vous puissiez voir le message d'erreur.

24voto

butterchicken Points 4768
call msbuild.bat
call unit-tests.bat
call deploy.bat

21voto

Zifre Points 14109

Pour appeler un .bat dans un fichier .bat utilisez

call foo.bat

(Oui, c'est stupide, cela aurait plus de sens si vous pouviez l'appeler avec foo.bat comme vous le feriez à partir de l'invite de commande, mais la méthode correcte consiste à utiliser call .)

7voto

McOussKing Points 1
Start msbuild.bat
Start unit-tests.bat
Start deploy.bat

Si cela ne fonctionne pas, remplacez start avec call ou essayez ceci :

Start msbuild.bat
Goto :1
:1
Start unit-tests.bat
Goto :2
:2
Start deploy.bat

6voto

Dave Archer Points 2377

En regardant vos noms de fichiers, avez-vous envisagé d'utiliser un outil de construction comme nant ou ant (la version java). Vous aurez beaucoup plus de contrôle que les fichiers bat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X