Lancement de différents scripts par "vagues"
Bonjour,
j'ai besoin de lancer une dizaine de scripts par vagues parallèles.
J'essaye en vain depuis hier des combinaisons de start et de wait sans résultats.
Pour essayer de faire ce que je veux j'utilise des petits scripts de test qui me permettent de vérifier si les exécutions sont bien en parallèle.
Il s'agit de fichiers de type testx.bat (x entre 1 et 4) constitués de la manière suivante :
Code:
1 2 3 4 5 6
| @echo x
@ping localhost -n 10 > nul
@echo x
@ping localhost -n 10 > nul
@echo x
@exit |
J'ai ensuite regroupé mes petits fichiers par vague, dans des fichiers test_vague1 ayant cette forme :
Code:
1 2 3 4
| @echo off
echo debut premiere vague
start /B test1.bat
start /B test2.bat |
(test_vague2 faisant la même chose mais avec 3 et 4).
Mon but c'est d'arriver à avoir les 1 et les 2 en parrallèles PUIS les 3 et les 4 en parralèle.
Mon test final est donc :
Code:
1 2 3 4 5 6 7 8
| @echo off
echo debut du test
start /B /Wait test_vague1.bat
echo fin de la premiere vague
start /B /WAIT test_vague2.bat
echo fin de la deuxieme vague
echo fin du test
exit |
Or quand j'exécute ceci, il me fait bien les 1 et les 2 en parralèles, mais après il n'imprime jamais "fin de la première vague".
J'ai déjà essayé avec des CALL au lieu des start /Wait mais cela ne marche pas (j'ai des 1, 2, 3 et 4 en meme temps)
De plus, en haut de la fenêtre le nom des fichiers test1.bat et test2.bat restent visibles (comme des titres de la fenêtre), comme s'ils n'étaient pas finis, alors que test_vague1.bat n'apparait jamais. Je ne sais pas s'il y a lien mais je donne toutes les pistes possibles.
Merci de votre future aide,
Orwel.
Edit :
Voici l'avancement de mes recherches
-> Apparemment ce que je cherche à faire se fait simplement sous bash avec la commande wait qui malheureusement n'existe pas sous Windows. Je ne pense pas pouvoir installer cygwin ou assimilé (...)
-> Je pourrais également faire des effets de bords dans mes scripts (écriture/suppression de fichiers) et faire des boucles d'attente de ces effets entre chaque vague, mais une boucle infinie est assez gourmande niveau processeur non ? Ou est-ce que je me trompe, et cette solution serait équivalente à celle que je cherche à obtenir (niveau performance) avec start /wait ?
-> Dans le cas ou j'utiliserais des effets de bords, mettre la boucle d'attente en parrallèle est-il une solution pour améliorer les performances ?
-> L'utilisation de start /wait marche très bien quand un processus n'attends qu'un seul autre pour continuer (par exemple avoir les 1 PUIS des 2 et en parralèle avoir des 3 PUIS des 4). Le problème ici n'est pas le côté parralèle, mais bien de savoir que plusieurs processus parralèles sont finis.