Nom de fichier

Résolu
gval Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 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



A voir également:

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   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 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour vos explications claires.
Cdlt.
0
gval Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   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 28 Date d'inscription   Statut Membre Dernière intervention  
 
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   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