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 :

Boucle for imbriquee dans une boucle if qui refuse de fonctionner


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Points : 10
    Points
    10
    Par défaut Boucle for imbriquee dans une boucle if qui refuse de fonctionner
    Salut tout le monde,

    Dans mon code, j'ai une boucle for imbriquee dans une boucle if. Et bien sur elle refuse de faire ce qu'elle est censee faire.
    Toutefois, elle fonctionne quand je la prend separement.

    Voici mon code:

    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
    @echo off
    
    set counter=0
    
    for %%j in ("D:\Backup project\Deleting process\Test\*.txt") do (
      set /a counter+=1
    )
    
    if %counter% GEQ 7 (
      set /a difference=%counter%-7
      set difference
      set var=0
      set var
      for /l %%k in (1, 1, %difference%) do (
        set /a var+=1
      )
    )
    
    set var
    
    pause
    Tout ceci est dans un batch.

    J'ai teste les lignes une a une et ce code la marche:

    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
    @echo off
    
    set counter=0
    
    for %%j in ("D:\Backup project\Deleting process\Test\*.txt") do (
      set /a counter+=1
    )
    
    if %counter% GEQ 7 (
      set /a difference=%counter%-7
      set difference
      set var=0
      set var
      )
    
    set var
    
    pause
    Le premier code me renvoit:

    difference=2
    var=0
    var=0

    Il ne tient ainsi pas compte de la boucle for.

    Mais pourquoi ??

    Je precise juste que dans ce cas, counter vaut 9.

  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,

    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
    24
    @echo off
    
    setlocal enabledelayedexpansion enableextensions
    
    set counter=0
    
    for %%j in ("D:\Backup project\Deleting process\Test\*.txt") do (
      set /a counter+=1
    )
    
    if !counter! GEQ 7 (
      set /a difference=!counter!-7
      set difference
      set var=0
      set var
      for /l %%k in (1, 1, %difference%) do (
        set /a var+=1
      )
    )
    
    echo !var!
    
    pause

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    J'étais pas près de trouver ça tout seul...

    C'est contre-naturel au possible. Je ne comprends pas bien. Avec les %, ça marche sans le for.

    Tu peux m'en dire un peu plus là dessus ? Pourquoi cette différence ?
    Apparemment, il fallait aussi enelever les % pour la condition dans le for.

    Tu pourrais aussi m'expliquer ce que vont les deux attributs du setlocal ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2015, 05h53
  2. optimiser une boucle while imbriquer dans une boucle for
    Par bakaratoun dans le forum MATLAB
    Réponses: 0
    Dernier message: 28/01/2010, 15h35
  3. Réponses: 5
    Dernier message: 27/11/2008, 17h34
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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