IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Lancement de deux .exe


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut Lancement de deux .exe
    Bonjour à tous !

    J'ai fais du batch il y a quelques années mais j'ai un peu perdu tout ça ... En tout cas je pense que c'est le langage le plus simple à utiliser pour ce que j'aimerais faire :

    En fait, je fais tourner un serveur de jeux en ligne sur mon PC. Pou cela, je dois lancer deux fichiers exécutables, l'un après l'autre. Ces fichiers ne doivent jamais être interrompus pour que le serveur puisse tourner. Mais il arrive quelques fois que l'un d'entre eux se ferme tout seul (souvent des bugs dans les requêtes sql par exemple ...).

    Appelons les deux fichiers, dans leur ordre de lancement (l'un doit être lancé avant l'autre), fichier1.exe et fichier2.exe.

    J'aimerais donc créer un petit fichier .bat qui ferait :

    - Vérification que fichier1.exe ET/OU fichier2.exe sont ouverts.
    - Fermer le ou les fichier(s) reconnu(s) comme ouvert(s).
    - Lancer fichier1.exe.
    - Lancer fichier2.exe.

    Voila !
    J'ai lu la FAQ, il y a les commandes, mais c'est simplement que je ne sais plus du tout comment coder en Batch, donc pas facile à mettre en forme
    Ca doit être simple pour vous je pense ! ^^

    Je me souviens de la commande "start", mais si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    start fichier1.exe
    start fichier2.exe
    Ils seront lancés en même temps non ?

    Je vous remercie par avance !

  2. #2
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    salut,

    Quel est ton système d'exploitation ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Je tourne sous Vista

  4. #4
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    regardes si tu disposes de «tasklist» et «taskkill»

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Je possède bien ! (dans system32)

  6. #6
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    Dans ce cas, tu as tout le nécessaire pour faire ce que tu souhaites.

    tasklist te permet de savoir quelles sont les applications en cours d'exécution.
    taskkill sert à mettre fin au programme de ton choix
    find à rechercher une chaine.
    start à lancer une application
    et si tu as besoin d'un délai par exemple de deux secondes entre les deux lancements tu peux utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ping -n 2 127.0.0.1 > NUL
    Pour les autres commandes, je t'invite à lire leur aide en ligne en utilisant cette syntaxe sur la console:

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Merci !

    J'avoue ne pas avoir beaucoup de temps en ce moment pour ré-apprendre l'algo des batch et comment l'utiliser ... Mais si vous voulez vraiment pas le faire alors j'essaierai quand je pourrais

    Je viens d'avoir une autre idée :

    Est-ce possible de créer un programme ouvert en permanence, et qui puisse détecter si justement mes fichier1.exe et fichier2.exe sont fermés ? (genre toutes les 30secondes). Et si l'un des deux est fermé, il le relance !

    Voila, merci en tout cas de tes réponses maxim_um

  8. #8
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    Citation Envoyé par Petrucci Voir le message
    Est-ce possible de créer un programme ouvert en permanence, et qui puisse détecter si justement mes fichier1.exe et fichier2.exe sont fermés ? (genre toutes les 30secondes). Et si l'un des deux est fermé, il le relance !

    Oui, c'est tout à fait possible. L'idéal serait de faire un service pour Windows qui prendra en charge ce que tu souhaites et dont le fonctionnement serait événementiel et non basé sur un Timer. Maintenant si tu n'as pas de notions en programmation, avec un script de commande tu peux aussi t'en sortir pour peu que tu fasses un effort de quelques minutes.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par maxim_um Voir le message
    Oui, c'est tout à fait possible. L'idéal serait de faire un service pour Windows qui prendra en charge ce que tu souhaites et dont le fonctionnement serait événementiel et non basé sur un Timer.
    En effet, un fonctionnement évenementiel serait plus approprié. Si tu as des idées pour m'aider à mettre ça en forme, ça m'aiderait beaucoup ! (batch ou script de commandes ^^).

    Citation Envoyé par maxim_um Voir le message
    Maintenant si tu n'as pas de notions en programmation, avec un script de commande tu peux aussi t'en sortir pour peu que tu fasses un effort de quelques minutes.
    J'ai des notions de programmations, mais ça reste très théorique. Dans la pratique, j'ignore les typographies des langages. Le script de commande serait peut-être bien dans mon cas alors !

    Je tiendrait ce topic à jour pour montrer si j'ai avancé.

  10. #10
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    En effet, d'après ce que tu écris un script de commande semble plus adapté à tes capacités actuelles.

    Saches dans la foulée que tu dois tirer un trait sur le mode événementiel qui lui nécessite une réelle programmation et la production d'une dll ou d'un exécutable qui doit être intégré à Windows.

    Cela dit avec un script ça marche bien. Une fois que tu auras montré une réelle motivation d'apprentissage et que tu auras produit quelques lignes de "code", tu pourras prétendre à un soutien plus approfondi avec de différentes suggestions de la part des différents intervenants, et ce jusqu'à l'obtention d'un script stable qui est en parfaites adéquations avec ton besoin.

    Aussi, il ne faut pas que tu te décourages, il n'est en aucun cas question ici d'apprendre de l'algorithme ou je ne sais quoi d'autres, mais simplement de savoir utiliser les commandes mises à disposition par le système pour générer un script fonctionnel. L'aide en ligne fournit toutes les informations nécessaires et c'est pour cela qu'il ne s'agit que d'une affaire de quelques minutes le temps d'un effort de lecture.

    Voilà, bonne continuation à toi.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Ok, je vais m'y mettre dès que la rentrée sera bien entammée (j'entre en DUT Informatique d'ailleurs ).

    En tout cas merci de toutes ces infos maxim_um !

    Au passage, si une âme charitable se sent d'attaque pour me mâcher le travail un petit coup ...

    Bon ok je sors

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Bon j'ai fait ce petit test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TaskList | findstr /c:fichier1.exe > nul
    If %errorlevel%== 0 
    	taskkill /im fichier1.exe
    	taskkill /im fichier2.exe
    If %errorlevel%== 1 
    	TaskList | findstr /c:fichier2.exe > nul
    	If %errorlevel%== 0
    	taskkill /im fichier1.exe
    	taskkill /im fichier2.exe
    	
    start fichier1.exe
    ping -n 2 127.0.0.1
    start fichier2.exe
    Mais ça a pas l'air de marcher ...
    C'est un problème de fin de condition je pense, mais je vois pas bien comment le régler là

  13. #13
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Il faut tout mettre sur une seule ligne pour l'instruction if il me semble.
    Aide en tapant ceci dans la console :

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Merci de cette précision !
    Donc après des modifs j'arrive à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TaskList | findstr /c:fichier1.exe > nul
    If %errorlevel%== 0. taskkill /im fichier1.exe. taskkill /im fichier2.exe. Else TaskList | findstr /c:fichier2.exe > nul.
    
    If %errorlevel%== 0. taskkill /im fichier1.exe. taskkill /im fichier2.exe.
    	
    start fichier1.exe
    ping -n 2 127.0.0.1
    start fichier2.exe
    L'ennui, c'est que les "taskkill" ont pas l'air de fonctionner : mes programmes ne se ferment pas comme je l'ai indiqué ..

  15. #15
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Enleve les points après tous tes fichier1.exe, fichier2.exe.
    Sépare les différentes commandes taskkill par un caractère "&".

    Exemple de ligne qui fonctionne chez moi (ferme le notepad et la calculette dans tous les cas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if 0==0 taskkill /im notepad.exe & taskkill /im calc.exe
            \______________________/   \___________________/
                   commande 1               commande 2      
    
       ____ --> condition            _ --> séparateurs des commandes

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    
    TaskList | findstr /c:fichier1.exe > nul
    If %errorlevel%== 0. taskkill /im fichier2.exe & start fichier1.exe & ping -n 2 127.0.0.1 & start fichier2.exe Else TaskList | findstr /c:fichier2.exe > nul.
    
    If %errorlevel%== 0. taskkill /im fichier1.exe & start fichier1.exe & ping -n 2 127.0.0.1 & start fichier2.exe
    
    @echo on
    Les conditions avec "If" n'ont toujours pas l'air de fonctionner

    En fait là je veux :

    - Tester si fichier1.exe est fermé.
    - S'il est fermé, fermer fichier2.exe et relancer les deux
    - Sinon, vérifier si fichier2.exe est fermé.
    - S'il est fermé, fermer fichier1.exe et relancer les deux ...

    Je m'y prends bien ?

    Parceque là rien ne se passe quand deux fichier1.exe ou fichier2.exe sont ouverts ...

    Merci en tout cas

  17. #17
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    salut,

    voici un bout de script qui te mettra sur la piste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tasklist | find /i "fichier1.exe" > NUL
    if not errorlevel 1 echo fichier1.exe est actif
    Essais d'intégrer des variables pour rendre compte de l'état d'activité des applications et évite les suites de commandes interminables qui présuposent d'office que l'un des exécutables est en cours de fonctionnement.

  18. #18
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    Essaie en enlevant les points (après la condition, à la fin de la première ligne) comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    
    TaskList | findstr /c:fichier1.exe > nul
    If %errorlevel%== 0 taskkill /im fichier2.exe & start fichier1.exe & ping -n 2 127.0.0.1 & start fichier2.exe Else TaskList | findstr /c:fichier2.exe > nul
    
    If %errorlevel%== 0 taskkill /im fichier1.exe & start fichier1.exe & ping -n 2 127.0.0.1 & start fichier2.exe
    
    @echo on

Discussions similaires

  1. Lancement d'un exe
    Par MeDioN dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 28/08/2007, 12h08
  2. lancement d'un exe
    Par Barbibul dans le forum Autres Logiciels
    Réponses: 14
    Dernier message: 20/07/2006, 21h58
  3. Passage de paramétre au lancement d'un exe
    Par emerysky dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/06/2006, 19h58
  4. [Système] Lancement d'un exe
    Par MeDioN dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 25/01/2006, 16h17
  5. [JFrame]pb de lancement de deux JFrame en même temps
    Par spoutyoyo dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 24/08/2004, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo