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.
Je voudrais vérifier les solutions à cette question: Exécuter plusieurs fichiers de commandes
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.
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
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
:
Une commande START /W
est appelée et démarre un fichier de commandes.
Le fichier de commandes commence à s'exécuter et exécute un programme.
Le fichier de commandes se termine et sa fenêtre de console reste ouverte, mais le programme continue de s'exécuter.
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.
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.