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 :

Variables globales dans script bat


Sujet :

Scripts/Batch

  1. #1
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut Variables globales dans script bat
    Bonjour

    Voici le contexte:
    j'ai un script batch qui va être appeler par une tâche planifiée à une fréquence F.
    Ce script appel une commande externe qui retourne un résultat.

    Mon objectif est de déclencher une action au bout de x retour consécutif en erreur à la fonction externe

    Voici ce que j'ai fait

    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
    20
    21
    22
    23
    @echo off
    set NB_ERROR=0
    setlocal enableDelayedExpansion enableextensions
    
    
    
    
    FOR /f "delims=" %%a in ('ICI Commande externe') DO (
       echo %%a
                      
       IF  "%%a%"=="VALUE" (
         rem ECHO "FAILED"
         set /A NB_ERROR+= 1
      )
    )
    
    ENDLOCAL
    ECHO %NB_ERROR%
    IF %NB_ERROR% EQU 1 (
     ECHO "FAILED"
     
    )
    Ce qui ne fonctionne pas c'est que la variable NB_ERROR n'est pas persistée.
    J'ai cru comprendre qu'il faut utiliser setx mais le problème est que je suis dans windows 2008 server

    Si vous avez une idée je suis preneur

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    le problème dans ton script est que tu termine le contexte local (via "endlocal") avant l'expansion de ta variable, comme celle-ci n'existe que dans le contexte local (entre "setlocal ..." et "endlocal"), il n'est donc pas possible d'accéder à sa valeur. Le script ci-dessous devrait marcher.

    Code bat : 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
    @echo off
    setlocal enableDelayedExpansion
     
    set /a "NB_ERROR=0"
    for /f "delims=" %%a in ('ICI Commande externe') DO (
      echo %%a
      if /i  "%%a"=="VALUE" (
         set /A "NB_ERROR+= 1"
      )
    )
     
    echo !NB_ERROR!
    if !NB_ERROR! EQU 1 (
     echo "FAILED"
     
    )
    endlocal
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2013, 15h07
  2. Variables globales dans scripts secondaires
    Par Okidor12 dans le forum Tcl/Tk
    Réponses: 3
    Dernier message: 13/02/2012, 16h54
  3. Variable globale dans un script shell
    Par oumokhtar dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 30/06/2008, 11h04
  4. Réponses: 3
    Dernier message: 05/02/2008, 12h03
  5. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22

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