Nom de fichier

Résolu
gval Messages postés 38 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je voudrais renommer des fichiers avec DOS, concaténer le nom avec la date et l'heure système.
Exemple: Le fichier "nomfic.txt" devient "nomfic_20131017161503.txt".

Quelles instructions pour récupérer la valeur système.?
Quelles instructions pour renommer le fichier. ?

Merci vos réponses syntaxiques

1 réponse

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    on récupère date et heure dans les variables %date% et %time%
    C:> set d=%date:~6,4%%date:~3,2%%date:~0,2%
    C:> echo %d%
    20131017
    C:> set t=%time:~0,2%%time:~3,2%%time:~9,2%
    C:> echo %t%
    162368
    C:> ren nomfic.txt nomfic_%d%%t%.txt
    0
    1. gval Messages postés 38 Statut Membre
       
      Merci pour vos explications claires.
      Cdlt.
      0
    2. gval Messages postés 38 Statut Membre
       
      Cela fonctionne quand l'heure est supérieure ou égale à 10H00.
      Avant 10H00 l'instruction "ren nomfic.txt nomfic_%d%%t%.txt" donne par exemple
      "nomfic_20131018 92817.txt" Avec un espace entre la date et l'heure, ce qui donne une syntaxe incorrecte, et donc DOS ne renomme pas le fichier "nomfic".
      Après 10H00, on n'a plus ce problème.
      Comment garder le "0" de la première position de l'heure pour garder une syntaxe correcte.
      Merci
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      effectivement !!
      on remplace l'espace par un 0
      j'ai modifié set t=... les secondes étaient fausses
      set d=%date:~6,4%%date:~3,2%%date:~0,2%
      set t=%time:~0,2%%time:~3,2%%time:~6,2%
      set t=%t: =0%
      ren nomfic.txt nomfic_%d%%t%.txt
      à tester demain
      0
    4. gval Messages postés 38 Statut Membre
       
      J'ai modifié le programme " .bat" en fonction, puis changé l'heure du PC et testé.
      OK ça marche. J'ai retenue cette solution plus simple et mis le programme en production.

      Toutefois, j'ai pu tester aussi une autre solution qui fonctionne avec "FOR" .
      for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set he=%%a
      for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set mi=%%b
      for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set sc=%%b

      A toutes fins utiles.
      Encore merci.
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      on peut le faire en une seule boucle, mais time /t ne retourne pas les secondes (sur XP)
      for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do (set he=%%a
      set mi=%%b
      set sc=%%c)
      echo %he%%mi%%sc%
      0