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 :

Obtenir l'heure dans une boucle [Batch]


Sujet :

Scripts/Batch

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut Obtenir l'heure dans une boucle
    Bonjour,

    J'ai un script *.bat qui traite des fichiers en entrée.

    Durant le traitement, il génère, pour chaque fichier en entrée, une série de fichiers.

    Je souhaite horodater ces fichiers générés, afin de ne pas les écraser si je traite plusieurs fichiers en entrée à la suite.

    Tout marche bien, au détail près de... l'horodatage !

    En fait, j'ai beau passer plusieurs fois dans la boucle, la variable "dt" conserve sa valeur initiale.

    Code batch : 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
     
    @echo off
     
    rem Parcours de tous les fichiers en attente
    for /f %%f in ('dir /b in') do (
    echo Traitement du fichier %%f
     
    rem Récupération de la date et heure
    for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
     
    rem Traitement des fichiers qui dure plusieurs secondes (...)
     
    rem Archivage des derniers fichiers générés
    copy "out\*.csv" "out\archives\*.%dt:~0,14%" /Y
    del "out\*.csv" /F /Q
     
    rem Archivage du fichier traité
    move "in\%%f" archives
    )
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    J'ai essayé aussi de prendre la variable %time%, mais elle n'évolue pas non plus durant l'exécution du script...
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Cela vient du fait que le batch windows a un effet "rémanent".
    Certaines actions au sein d'une boucle ne sont affectées qu'une seule fois lors de l'interprétation du code.

    Voici ce qu'il te faut :
    https://technet.microsoft.com/fr-fr/...=ws.10%29.aspx
    Et un petit article sur le sujet (en anglais) :
    http://batcheero.blogspot.fr/2007/06...expansion.html

    Pour ma part j'en ai eu tellement marre que j'ai migré tous mes scripts sous Python...
    Je ne comprends pas l'utilité d'une telle fonctionnalité.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/04/2010, 12h05
  2. [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
  3. [Batch] Concatenation dans une boucle
    Par madislak dans le forum Windows
    Réponses: 5
    Dernier message: 26/06/2007, 13h08
  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. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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