2011-10-10 11 views
1

J'ai une séquence de 3 programmes qui doivent être lancés l'un après l'autre. J'ai trouvé quelque chose sur le web comme Wich est exactement ce que je whant à faire:ouvrir plusieurs programmes séquentiellement avec cmd

start /wait /b First.exe 
start /wait /b Second.exe 
start /wait /b Third.exe 

Mon problème est que j'ai séquence 1000 pour lancer ... donc j'ai essayé

start "exemple" "start /wait /b First.exe 
start /wait /b Second.exe 
start /wait /b Third.exe" 
start "exemple2" "start /wait /b First.exe 
start /wait /b Second.exe 
start /wait /b Third.exe" 

J'ai aussi essayé

start /b First1.exe 
start /wait /b Second1.exe 
start /wait /b Third1.exe 

start /b First2.exe 
start /wait /b Second2.exe 
start /wait /b Third2.exe 

Ce ne fonctionne pas trop ... donc je ne sais pas comment le faire.

une idée? thx :)

[EDIT]

Essayons de le rendre plus clair

start "exemple" "start /wait /b First.exe 
start /wait /b Second.exe 
start /wait /b Third.exe" 
start "exemple2" "start /wait /b First.exe 
start /wait /b Second.exe 
start /wait /b Third.exe" 

Ce a échoué car le 2ème départ est pas reconnu, il dit que les fenêtres ne peuvent pas trouver « start/parce que l'ordre est sont lancés First1.exe et Second1.exe wait/b First.exe »

start /b First1.exe 
start /wait /b Second1.exe 
start /wait /b Third1.exe 

start /b First2.exe 
start /wait /b Second2.exe 
start /wait /b Third2.exe 

Cette tentative échoua. Ensuite, l'ordinateur attendre la fin de Second1.exe pour lancer First2.exe et Second2.exe ...

L'ordre je voudrais est Le lancement de l'ordinateur First1.exe & First2.exe Second1.exe est lancé lorsque First1.exe a terminé et Second2.exe est lancé lorsque First2.exe a terminé.

Je voudrais éviter d'utiliser un .cmd par exécution (ce serait ma solution d'échec).

Je voudrais être plus clair cette fois!

+2

Ce que vous essayez de faire n'est pas vraiment clair? –

+1

Non seulement ce n'est pas clair, mais vous n'avez pas réussi à dire comment vos tentatives ont échoué. "Cela ne fonctionne pas" n'est jamais utile. –

+0

'start' est une commande interne dans CMD.EXE, elle ne peut pas être lancée à partir d'une commande' start' comme peuvent l'être les vrais EXE. Donc, si vous essayez de lancer 'first.exe' avec le titre de la fenêtre' example', vous devriez lancer 'start 'exemple"/wait First.exe' ... Sinon, à quoi sert votre "exemple"? – ewall

Répondre

2

Vous aurez besoin d'une instance de cmd.exe pour chaque séquence, en plus de l'instance principale. Le système d'exploitation n'a pas de prise en charge intégrée pour les processus de séquençage et cmd.exe ne prend pas en charge le thread dans les fichiers de commandes.

Vous pouvez le faire comme ceci:

start "sequence1" cmd /c "First.exe & Second.exe & Third.exe" 
start "sequence2" cmd /c "First.exe & Second.exe & Third.exe" 
start "sequence3" cmd /c "First.exe & Second.exe & Third.exe" 
... 

La seule façon d'éviter la (assez modeste) en tête des instances supplémentaires de cmd.exe serait d'écrire une solution dans un vrai langage de programmation plutôt que en tant que fichier batch.

Vous voudrez peut-être aussi vous demander si cela est vraiment ce que vous voulez faire. Windows ne fonctionne généralement pas très bien lorsque des centaines de processus sont exécutés simultanément.

0

qu'en est-il de l'ajout d'invocations dans un seul fichier .CMD, puis de l'exécuter via start?

@echo off 
program1.exe 
program2.exe 
program3.exe 

Afin de vérifier si tout est ok, vous pouvez tester le code de retour de chaque progs unique dans .BAT/.CMD (ma mémoire ne cesse de me dire% ERRORLEVEL% mais je ne suis pas si sûr:()

2

Vous faites encore l'attente dans le principal fichier de commandes. Vous voulez la première/deuxième/Troisième séquence à être indépendante pour chaque cycle. Vous voulez le chaque cycle d'avoir son propre/attendre.

start "exempel" cmd /c start /wait First.exe ^& start /wait Second.exe ^& start /wait Third.exe 

Pensez-y comme donnant des instructions à une équipe d'assistants, vous voulez que chaque assistant «attende fr Attendez Second, puis attendez Third. "

Questions connexes