Nom de fichier

Résolu
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. Contributeur
    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
    1. Merci pour vos explications claires.
      Cdlt.
    2. 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
    3. Contributeur
      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
    4. 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.
    5. Contributeur
      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%