Changer nom de fichier selon la date de celui-ci en batch
Martin1972
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je souhaiterais renommer des centaines de photo avec un script en batch
par exemple j'ai :
PICT0001.jpg prise le 20 février 2014 à 15h30
je voudrais :
2014-02-20-1530.jpg
je sais qu'il faut utiliser une boucle for et la commande rename, et détecter la date et l'heure de la photo.
comment faire ?
J'ai trouvé ce script:
***********************************************
Par exemple, en supposant un OS W2k ou supérieur :
A adapter au pays, ici fait pour la suisse :
date /t --> "06.12.2006 "
time /t --> "08:29"
La commande "for" permet de décomposer une chaine de caractères dont les
différentes parties sont séparées par des caractères particuliers
(délimiteurs). Pour le délimiteur des divers parties de la date,
on a un point d'où "delims=. ".
Le premier "for" crée une variable "_n" contenant les diverses parties
de la date, sans les délimiteurs, dans l'ordre année-mois-jour.
Le deuxième "for" reprend le contenu de "_n" et lui ajoute les parties
de l'heure.
Le move utiliser "_n" pour renommer la photo.
*********************************************
Mais ça renomme la photo selon l'heure actuelle, et non l'heure de la prise de photo...
Merci à l'avance!
je souhaiterais renommer des centaines de photo avec un script en batch
par exemple j'ai :
PICT0001.jpg prise le 20 février 2014 à 15h30
je voudrais :
2014-02-20-1530.jpg
je sais qu'il faut utiliser une boucle for et la commande rename, et détecter la date et l'heure de la photo.
comment faire ?
J'ai trouvé ce script:
***********************************************
Par exemple, en supposant un OS W2k ou supérieur :
------------- debut photo.bat ----------------
@echo off
for /f "tokens=1,2,3 delims=. " %%a in ('date /t') do set _n=%%c%%b%%a
for /f "tokens=1,2 delims=: " %%a in ('time /t') do set _n=%_n%%%a%%b
move photo.jpg %_n%.jpg
set _n=
------------- fin photo.bat ----------------
A adapter au pays, ici fait pour la suisse :
date /t --> "06.12.2006 "
time /t --> "08:29"
La commande "for" permet de décomposer une chaine de caractères dont les
différentes parties sont séparées par des caractères particuliers
(délimiteurs). Pour le délimiteur des divers parties de la date,
on a un point d'où "delims=. ".
Le premier "for" crée une variable "_n" contenant les diverses parties
de la date, sans les délimiteurs, dans l'ordre année-mois-jour.
Le deuxième "for" reprend le contenu de "_n" et lui ajoute les parties
de l'heure.
Le move utiliser "_n" pour renommer la photo.
*********************************************
Mais ça renomme la photo selon l'heure actuelle, et non l'heure de la prise de photo...
Merci à l'avance!
A voir également:
- Batch renommer fichier avec date et heure
- Fichier bin - Guide
- Fichier .dat - Guide
- Fichier epub - Guide
- Renommer fichier en masse - Guide
- Fichier rar - Guide
3 réponses
hello
où trouver l'heure de la photo ? c'est l'heure de création du fichier donnée par la commande dir ?
où trouver l'heure de la photo ? c'est l'heure de création du fichier donnée par la commande dir ?
dubcek
Messages postés
18789
Date d'inscription
Statut
Contributeur
Dernière intervention
5 637
et si plusieurs fichiers ont la même date et heure ?
Bonjour dubcek,
Ce sont de photos de deux caméra de surveillance. Il arrive qu'il y ait 2 photos avec la même date et heure. J'imagine que ça peux être un problème...
Comme les photos sont toutes nommée PICT0001, PICT0002, etc. on pourrait se servir du numéro de photo pour les différencier.
Ex: si PICT0001 et PICT0002 on la même date et la même heure, 20 février 2014 à 15h30, On pourrait les nommer 2014-02-20-1530-0001 et 2014-02-20-1530-0002 en utilisant leur nom actuel de photo pour les renommer.
C'est la date de création du fichier qu'il faut récupérer car elle nous indique le moment de la prise de photo.
Ce sont de photos de deux caméra de surveillance. Il arrive qu'il y ait 2 photos avec la même date et heure. J'imagine que ça peux être un problème...
Comme les photos sont toutes nommée PICT0001, PICT0002, etc. on pourrait se servir du numéro de photo pour les différencier.
Ex: si PICT0001 et PICT0002 on la même date et la même heure, 20 février 2014 à 15h30, On pourrait les nommer 2014-02-20-1530-0001 et 2014-02-20-1530-0002 en utilisant leur nom actuel de photo pour les renommer.
C'est la date de création du fichier qu'il faut récupérer car elle nous indique le moment de la prise de photo.
pour simplifier, on peut garder le nom et ajouter la date de création
enlever le echo pour effectuer les chagements, faire une sauvegarde avant !!
enlever le echo pour effectuer les chagements, faire une sauvegarde avant !!
@echo off
setlocal enableDelayedExpansion
for %%a in (*.jpg) do (
set nom=%%~na
for /F "tokens=1-10 delims=:/ " %%b in ('dir /T:C "%%a" ^| find "%%a"') do(
echo move "%%a" "!nom!-%%d-%%c-%%b-%%e%%f.jpg"
)
)