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 :

Variable ne se modifie pas dans une boucle for [Batch]


Sujet :

Scripts/Batch

  1. #1
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 879
    Points : 26 147
    Points
    26 147
    Billets dans le blog
    3
    Par défaut Variable ne se modifie pas dans une boucle for
    Bonjour,

    Je dispose d'un répertoire contenant des sous-répertoires à zipper (chaque sous-répertoire contient des PDF).

    J'effectue donc une boucle avec FOR R et j'essaie de gérer le nom du fichier zip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SET FICHIER=prefixe_du_zip_
    
    CD mon_repertoire
    REM c'est OK
    
    REM boucle for pour les sous-répertoires
    
    FOR /D /r %%G in (*) DO (
    SET FICHIER_NOM=%FICHIER%%Date:~-4%%Date:~-7,-5%%Date:~-10,-8%%Time:~-11,-9%%Time:~-8,-6%%Time:~-5,-3%%Time:~-2%
    echo %FICHIER_NOM%
    C:\7-Zip\7z.exe a -tzip %FICHIER_NOM%.zip *.pdf %%G
    sleep 3
    )
    Le problème, c'est que FICHIER_NOM ne se modifie pas à l'intérieur.
    Résultat, un seul fichier zip est créé, puis comme FICHIER_NOM ne se modifie pas, le script rajoute dans le zip les différents répertoires. Pourtant pour moi les %Date% et %Time% devraient rendre le tout dynamique...
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  2. #2
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 879
    Points : 26 147
    Points
    26 147
    Billets dans le blog
    3
    Par défaut
    Un peu de google-documentation ne fait pas de mal

    Le problème vient du fait que quand on a du code entre parenthèse (boucle FOR, IF) une variable %FICHIER_NOM% n'est define qu'une seule fois, comme si la boucle est figée.

    J'ai rajouté Setlocal EnableDelayedExpansion.

    Et ensuite remplacé les %FICHIER_NOM% par des !FICHIER_NOM!, et voice qu'il est devenu dynamique.

    Je tagge résolu, mais n'hésitez pas à rajouter d'autres commentaires
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

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

Discussions similaires

  1. Variable x ne change pas dans une boucle
    Par Krower dans le forum Excel
    Réponses: 2
    Dernier message: 28/06/2015, 22h28
  2. [Débutant] Pas variable dans une boucle for
    Par Pilote26 dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/11/2011, 14h40
  3. Réponses: 1
    Dernier message: 29/12/2010, 15h10
  4. [Batch] Evaluation d'une variable modifiée dans une boucle FOR
    Par dedz dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/10/2009, 17h55
  5. Utiliser un pas dans une boucle For .. to .. do
    Par colorid dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2009, 11h09

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