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 :

[batch] incrémentation dans une boucle for


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut [batch] incrémentation dans une boucle for
    Bonjour,

    Je n'arrive pas à incrémenter une variable dans une boucle for. Je crois qu'à chaque tour de boucle, elle reprend sa valeur de départ..

    set k=0
    For /F %%i in ('dir /A:A /O:S /B') do (
    set /A k=%k%+1
    )
    echo %k%
    pause
    Ici, k vaut 1.


    set k=0
    For /F %%i in ('dir /A:A /O:S /B') do (
    set /A k=%k%+1
    echo %k%
    )
    pause
    Là, k vaut 0.
    Je crois avoir tout essayé, il doit me manquer quelque chose. Pourriez-vous m'aider svp ?

    Merci

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    essai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo on
    set /A Compteur=0 
    For /F %%i in ('dir /A:A /O:S /B') do ( 
    set /A Compteur+=1 
    ) 
    echo %Compteur%
    Possible effet de bord, si tu utilises la lettre k pour ton compteur
    la boucle for peut l'utiliser dans un autre contexte.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Merci beaucoup Laurent Dardenne !

    Ca fait plusieurs jours que je cherche pour ce problème !!
    J'aurais deux autres petites questions SVP.


    J'ai un dossier avec fichier1, fichier2 et fichier3
    Quand je fais ceci,

    @echo on
    set /A Compteur=0
    For /F %%i in ('dir /A:A /O:S /B') do (
    set /A Compteur+=1
    call rename %%i %Compteur%%%i
    )
    echo %Compteur%
    pause
    Je les renomme en
    0fichier1, 0fichier2, 0fichier3 mais je voudrais 0fichier1, 1fichier2 et 2fichier3.
    Pourquoi l'incrémentation n'est pas reconnue dans la boucle for ?

    Enfin, je voudrais récupérer les fichiers dans l'ordre dans lequel ils sont classés à l'écran. Est-ce possible ?
    Ou bien puis-je les archiver dans un ordre voulu et faire renommer les fichiers dans l'archive. Ainsi, l'ordre serait conservé ?

    Merci d'avance !

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    la suite d'instructions ( ...) limite la portée, utilise plutot ceci:
    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
    @echo off
    set /A Compteur=0 
    For /F %%i in ('dir /A:A /O:S /B') do call :Action %%i
    goto end
    
    :action
    set /A Compteur+=1 
    Set Old=%1
    Set New=%Compteur%%1
    Echo %Old% %New%
    
    rem ren  %%i %Compteur%%%i 
    
    Set Old=
    Set New=
    goto :eof
    
    :end
    set Compteur=

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Merci beaucoup Laurent Dardenne pour votre réponse et le temps que vous avez passé dessus.
    C'est parfait !

    Encore merci @bientôt !

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

Discussions similaires

  1. [Débutant] Deux incréments dans une boucle for simultanément
    Par lFantasyz dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/04/2014, 16h19
  2. Nom de fichier image incrémenté dans une boucle for
    Par franck31 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/10/2011, 16h49
  3. Addition dans une boucle For de variables incrémentées
    Par heberco dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/01/2011, 18h48
  4. impossible d'incrémenter dans une boucle for
    Par slayer21 dans le forum MATLAB
    Réponses: 13
    Dernier message: 29/07/2009, 14h09
  5. [BATCH] DOS, déplacement de fichier dans une boucle FOR
    Par nicoga dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 14/11/2008, 14h36

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