controler le status d'un service Windows par un batch
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

controler le status d'un service Windows par un batch



  1. #1
    yowhi

    controler le status d'un service Windows par un batch


    ------

    Bonjour,

    Je voudrais controler le status d'un service Windows et attendre que le service s'arrête avant d'autoriser le second service de démarrer.
    En d'autres termes,un service devrait s'arrêter complètement avant le lancement du second.

    Pour placer le contexte:
    1/ je ne suis pas tiptop sur les scripts batch ^^
    2/les 2 services sont gérés par 2 batch (1 batch /service) , ces batch sont déclenché par un ordonnanceur

    Donc j'ai mon ServiceA qui est running , il est stoppé a 13h (via l'ordonnanceur) et le ServiceB se lance a 13h (via l'ordonnanceur).
    en aucun cas mon ServiceB ne doit démarrer si le ServiceA est Running.
    je ne peux pas changer les horaires
    Pour le moment j'ai mis une tempo dans le bach du ServiceB mais ce n'ai pas une sécurité suffisante.

    ce que j'aimerai c'est faire une boucle qui contrôle le statut du ServiceA et lorsque celui si a le status STOPPED j'autorise le ServiceB de démarrer

    donc pour le moment je sais lire le statut, mais je n'arrive pas à l'exploiter pour faire ma boucle

    sc query serviceA | FINDSTR STATE

    je ne cherche pas forcement une solution toute faite, mais une piste pour me mettre le pied a l'étrier serait déjà bien

    Merci pour vos avis éclairés

    -----
    L'homme qui rame sur terre saura marcher sur l'eau. -yo- ;)

  2. #2
    Tryph

    Re : controler le status d'un service Windows par un batch

    Salut,

    l'idéal serait dé récupérer l'état du service directement dans une variable pour pouvoir la tester dans une boucle.
    je sais pas trop si on peut directement récupérer le résultat d'une commande dans une variable, mais y a moyen de "gruger" en passant par un fichier texte temporaire en faisant comme ça:

    Code:
    sc query SericeA | FINDSTR STATE > %temp%\service_state.txt
    set /p ETAT=< %temp%\service_state.txt
    la première ligne écrit le résultat de la commande dans le fichier service_state.txt
    la 2e ligne récupère le contenu du fichier pour le stocker dans la variable ETAT
    ETAT contient alors une chaine de ce genre:
    STATE : 1 STOPPED

    tu peux ensuite ne garder que la chaine à partir de son 33e caractère avec une ligne supplémentaire comme celle-ci:
    Code:
    set ETAT=%ETAT:~32%
    et là, ta variable ETAT ne contient plus que "STOPPED" ou "RUNNING" ou tout autre état possible...

    y a plus qu'a mettre tout ça dans une boucle et tester pour lancer le ServiceB ou refaire un tour de boucle (avec une petite tempo peut être).

    a+
    Dernière modification par Tryph ; 27/01/2012 à 10h58.

  3. #3
    yowhi

    Re : controler le status d'un service Windows par un batch

    Bonjour Tryph ,

    Merci pour ta réponse, je vais m'en inspirer pour solutionner mon affaire (je dois voir pour faire ma boucle). Je verrais par la suite pour récupérer le résultat de la commande dans une variable si ça peux m’éviter de passer un fichier.
    je fais un retour dès que j'ai réussi ...mais bon ça risque de prendre un peu de temps pour un novice ^^

    Merci encore a+
    L'homme qui rame sur terre saura marcher sur l'eau. -yo- ;)

Discussions similaires

  1. [Biotechnologie] réacteurs batch et fed batch
    Par invite899441b9 dans le forum Biologie
    Réponses: 1
    Dernier message: 21/11/2010, 10h53
  2. [Biotechnologie] batch simple et batch soutiré
    Par killboul dans le forum Biologie
    Réponses: 0
    Dernier message: 06/11/2010, 11h32
  3. Service pack 2 Windows 7 ??
    Par enji- dans le forum Logiciel - Software - Open Source
    Réponses: 18
    Dernier message: 11/08/2010, 08h37
  4. Windows service management
    Par invitec0e190d8 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 22/08/2005, 18h49