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.

6voto

CS_STEM Points 86

Si vous voulez ouvrir plusieurs fichiers batch à la fois, vous pouvez utiliser la commande call ; cependant, la commande call ferme le fichier bat en cours et passe à un autre ; si vous voulez en ouvrir plusieurs à la fois, vous pouvez essayer ceci

@echo off lancez cmd "call ex1.bat&ex2.bat&ex3.bat".

et ainsi de suite ou répétez le lancement de cmd "call..." pour n'importe quel nombre de fichiers. cela fonctionne pour WIN 7, mais je ne suis pas sûr pour les autres systèmes.

2voto

John Oliphant Points 11

En exécutant plusieurs scripts en un seul, j'ai eu le même problème. J'ai continué à le faire mourir au premier sans réaliser qu'il se terminait au premier script.

:: OneScriptToRunThemAll.bat
CALL ScriptA.bat
CALL ScriptB.bat
EXIT

:: ScriptA.bat
Do Foo
EXIT
::ScriptB.bat
Do bar
EXIT

J'ai supprimé les 11 lignes EXIT de mes scripts et j'ai réessayé. Les 11 scripts se sont exécutés dans l'ordre, un par un, dans la même fenêtre de commande.

:: OneScriptToRunThemAll.bat
CALL ScriptA.bat
CALL ScriptB.bat
EXIT

::ScriptA.bat
Do Foo

::ScriptB.bat
Do bar

0 votes

N'enlevez pas le exit remplacez-les par goto :eof à la place. Cela permettra de "retourner" au call

0 votes

Vous réalisez que dans un lot simple, les commandes sont exécutées dans l'ordre dans lequel elles sont appelées, ainsi que la disposition de base pour les index. @echo off :menu some commands goto menu notez que cela fonctionnera en boucle jusqu'à ce que la boucle soit fermée. en fait, vous n'avez pas besoin de l'option :: juste :

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