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 :

Incrémenter une variable


Sujet :

Scripts/Batch

  1. #1
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut Incrémenter une variable
    Bonjour,

    davantage familier du scripting sous Linux, j'ai un besoin ponctuel de réaliser un script en batch, dont je découvre en ce moment même la syntaxe !
    Je bloque pour incrémenter une variable dans une boucle de lecture des lignes d'un fichier.

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set /a compteur=0
    for /f %%a in (test.txt) do (
     .\balcon -t %%a -w fichier-%compteur%.wav
     set /a compteur+=1 
     echo %compteur%
    )
    Là, ma variable compteur est toujours à 0.

    Pourtant, en testant le script suivant
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set /a compteur=0
     echo %compteur%
     set /a compteur+=1 
     echo %compteur%
      set /a compteur+=1 
     echo %compteur%

    La variable s'incrémente bien.

    Il semble donc que l'incrément de la variable "compteur" soit ignoré au sein de la boucle.

    Pouvez-vous me fournir une explication et une solution au problème ?

    Merci
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    La logique est bonne, mais dans ce cas de figure (=à l'intérieur d'une boucle FOR) il faut retarder l'expansion de la variable comme ceci :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    setlocal enableextensions enabledelayedexpansion
    set /a compteur=0
    for /f %%a in (test.txt) do (
     .\balcon -t %%a -w fichier-!compteur!.wav
     set /a compteur+=1 
     echo !compteur!
    )

  3. #3
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    Effectivement, ça marche beaucoup mieux !

    Pour info, ce type de problème se pose-t-il dans un bloc d'instructions faisant suite à un if ?
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Je dirais non, mais ne pas hésiter en cas de problème à retarder l'expansion d'une variable, ça peut solutionner certains cas.

  5. #5
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    En essayant de comprendre le pourquoi du comment de cette expansion de variable, j'ai retrouvé ce post :
    https://www.developpez.net/forums/d6...e/#post4076938

    J'en indique le lien à toutes fins utiles !
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Oui dans tout "bloc" tu aura ce problème propre au batch

  7. #7
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Oui dans tout "bloc" tu aura ce problème propre au batch
    C'est ce que j'avais cru comprendre à travers la lecture du post dont j'ai indiqué le lien.
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2008, 22h33
  2. incrémenter une variable à chaque clique sur un lien
    Par Piccolo_son dans le forum Langage
    Réponses: 7
    Dernier message: 17/12/2007, 21h56
  3. Incrémenter une variable en CR9
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 13/02/2007, 15h59
  4. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  5. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19

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