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 :

Problème avec errorlevel [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut Problème avec errorlevel
    Bonjour,

    je rencontre un problème avec un script qui semble ne pas récupérer correctement la valeur de l'ERRORLEVEL. J'ai essayé plusieurs syntaxes, toutes sont en échec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    sc query OpsMgrEventConsumer | find /I "STATE" | find "RUNNING"
    if errorlevel 0 goto :stop
    goto :start
    
    :stop
    net stop OpsMgrEventConsumer
    
    sc query OpsMgrEventConsumer | find /I "STATE" | find "STOPPED"
    if errorlevel 1 goto :stop
    goto :start
    
    :start
    net start OpsMgrEventConsumer
    if errorlevel 0 (
    opcmsg a=a o=o msg_t="test scom" s=minor
    )
    if errorlevel 1 (
    opcmsg a=a o=o msg_t="test NOK scom" s=minor
    )
    L'exécution du script échoue après la commande net start, le script ne passe que par la boucle 1 et jamais par la deuxième. Si j'inverse en placant l'errorlevel a 1 en premier, a ce moment la, les 2 commandes sont exécutées...

    J'ai essayé avec la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if errorlevel 0 goto OK
    if errorlevel 1 goto NOK
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if errorlevel 0 goto OK else goto NOK
    mais la c'est encore pis, rien ne se passe !
    J'avoue je ne comprends plus rien.

    Pour info, je n'ai pas d'autre choix que d'utiliser la commande spéciale opcmsg car ce script ne fonctionne pas si je le lance directement depuis mon ERP.

    OS: windows 2008 R2 x64

    D'avance merci pour votre aide

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    salut,

    Je ne peux pas tester ton code mais tu peux essayé de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sc query OpsMgrEventConsumer | find /I "STATE" | find "RUNNING" && goto:stop
    goto :start
    
    :stop
    net stop OpsMgrEventConsumer
    
    sc query OpsMgrEventConsumer | find /I "STATE" | find "STOPPED" || goto:stop
    goto :start
    Ton état (STATE) peut-il avoir d'autres position que RUNNING OU STOPPED ?
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    Hello, merci pour ta réponse.

    Ton script fonctionne correctement si je le lance directement, mais a travers mon logiciel en revanche ce n'est plus le cas. Le logiciel en question est HPOM.
    J'ai l'impression que le service met trop de temps pour passer de starting a started ce qui provoque une erreur en code de sortie de l'outil. Ce qui explique pôurquoi, j'ai vraiment besoin de générer un message avec opcmsg selon le code d'erreur des commandes, afin de m'assurer que le service a bien redémarré.

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    et si depuis hpom tu lances un bat qui contient seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    start test.bat
    et dans test.bat tu mets ton code. Il se passe quoi ?
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    oui en effet avec ta technique mon tool est bien en status success, mais je n'ai aucun moyen de savoir si le vrai script a bien restarter mon processus.

    Mais je n'arrive pas a comprendre pourquoi ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    :start
    net start OpsMgrEventConsumer
    if errorlevel 0 goto :ok else goto :nok
    
    :ok
    opcmsg a=a o=o msg_t=OK s=minor
    :nok
    opcmsg a=a o=o msg_t=NOK s=minor
    exit
    passe par les 2 goto :ok et :nok

    Qu'y a t'il de faux dans mon script, car la commande net start renvoie bien un code de sortie (j'ai vérifié au préalable)

  6. #6
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    C'est parce que lorsque tu va sur :ok il va jusqu'au bout donc il passe par le :nok.

    Pour éviter cela fait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    
    :start
    net start OpsMgrEventConsumer
    if errorlevel 0 goto :ok else goto :nok
    
    :ok
    opcmsg a=a o=o msg_t=OK s=minor
    goto:end
    
    :nok
    opcmsg a=a o=o msg_t=NOK s=minor
    
    :end
    exit
    Et pour savoir si le processus à été restarté interesse toi à la commande "tasklist".
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #7
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    Yess bien vu

    bon j'ai bien qu'un seul message qui est généré cette fois.
    J'ai modifié mon script pour faire ma vérif avec la commande tasklist, mais j'ai en revanche toujours le problème de l'évaluation de l'errorlevel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    :start
    net start OpsMgrEventConsumer
    
    tasklist  | findstr /b ScInteropd
    if errorlevel 0 goto :ok
    goto :nok
    
    :ok
    opcmsg a=a o=o msg_t=OK s=minor
    goto :end
    :nok
    opcmsg a=a o=o msg_t=NOK s=minor
    goto :end
    
    
    :end 
    exit
    ca passe toujorus par le goto :OK meme quand la commande tasklist ne me renvoie rien...

  8. #8
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Essaye de cette manière pour voir si ça change quelque chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    :start
    net start OpsMgrEventConsumer
    
    tasklist  | findstr /b "ScInteropd"
    call :traitement %errorlevel%
    goto:end
    
    :traitement
    if %1==0 (opcmsg a=a o=o msg_t=OK s=minor
                  exit /b) else (opcmsg a=a o=o msg_t=NOK s=minor
                                    exit /b)
    
    :end
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  9. #9
    Membre régulier
    Homme Profil pro
    Architecte Supervision
    Inscrit en
    Juillet 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte Supervision
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 84
    Points : 79
    Points
    79
    Par défaut
    GLOIRE AU GRAND SACHADEE

    Ca marche nickel merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] problème avec errorlevel
    Par vbcasimir dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 25/09/2009, 11h55
  2. Problème avec l'utilisation de %ERRORLEVEL%
    Par Bahan dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/02/2008, 12h19
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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