web-dev-qa-db-fra.com

Exécuter les fichiers de commandes séquentiellement

Je veux vous demander à tous comment exécuter séquentiellement des fichiers de commandes dans Windows ..__J'ai essayé:

start /w batchfile_1.bat 
start /w batchfile_2.bat
..
start /w batchfile_n.bat

mais je dois fermer manuellement le processus de fichier précédent .bat (par exemple, en cliquant) avant de passer au suivant . Existe-t-il une solution pour le faire automatiquement sans que je ferme manuellement le programme .bat précédent à chaque fois?

Merci beaucoup.

12
user1634603

Je voudrais vérifier les solutions à cette question: Exécuter plusieurs fichiers de commandes

  • Tiré de la réponse dans le lien.

Utiliser l'appel:

call bat1.cmd
call bat2.cmd

Par défaut, lorsque vous exécutez un fichier de commandes à partir d'un autre, le contrôle ne sera pas renvoyé à celui qui appelle. C'est pourquoi vous devez utiliser call.

En gros, si vous avez un lot comme celui-ci:

@echo off
echo Foo
batch2.cmd
echo Bar

alors il ne sortira que

Foo

Si vous écrivez comme

@echo off
echo Foo
call batch2.cmd
echo Bar

cependant, il va sortir

Foo
Bar

car après la fin de batch2, le contrôle du programme est retransféré dans votre fichier batch original.

17
Ishikawa

Si vous aimez utiliser START, vos fichiers de commandes pourraient se terminer par la commande EXIT. Cela fermera les fenêtres créées par la commande start.

@echo off
 .
 .
:: Inspired coding
 .
 .
exit
3
James K

Je ne suis pas sûr, mais d'après vos commentaires, les événements suivants semblent se produire lorsque vous exécutez cette séquence de commandes START:

  1. Une commande START /W est appelée et démarre un fichier de commandes.

  2. Le fichier de commandes commence à s'exécuter et exécute un programme.

  3. Le fichier de commandes se termine et sa fenêtre de console reste ouverte, mais le programme continue de s'exécuter.

  4. La commande START /W utilisée pour exécuter le fichier de commandes est toujours en cours d'exécution car la fenêtre de la console reste ouverte.

  5. Vous attendez que le programme se termine, puis vous fermez la fenêtre de la console, puis la commande START /W suivante est appelée et tout est répété.

Maintenant, si vous placez EXIT à la fin de chaque fichier batch que vous souhaitez exécuter séquentiellement, la situation empire car elle provoque la fermeture de la fenêtre de la console une fois le script batch terminé, ce qui met fin à la commande START /W correspondante et en provoque une autre. à exécuter, même si le programme appelé par le script batch est toujours en cours d'exécution. En conséquence, les scripts de traitement par lots (ou plutôt les programmes exécutés par ceux-ci) s'exécutent simultanément plutôt que séquentiellement.

Je pense que si cela peut être résolu du tout, vous devez déplacer la commande START /W et la placer dans chaque fichier de commandes devant (chaque) commande que ce fichier de commandes exécute et n'attend pas la fin. Autrement dit, si votre batchfile_1.bat exécute un program.exe, modifiez la ligne de commande en START /W program.exe et de la même manière pour les autres commandes pertinentes dans d'autres fichiers de traitement par lots.

0
Andriy M