Nom de fichier

Résolu
gval Messages postés 38 Statut Membre -  
dubcek Messages postés 19021 Statut Contributeur -
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



A voir également:

1 réponse

dubcek Messages postés 19021 Statut Contributeur 5 637
 
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
gval Messages postés 38 Statut Membre
 
Merci pour vos explications claires.
Cdlt.
0
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
dubcek Messages postés 19021 Statut Contributeur 5 637
 
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
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
dubcek Messages postés 19021 Statut Contributeur 5 637
 
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