Inverser une date Batch

Fermé
cedric - 4 nov. 2017 à 14:39
 Cedric - 30 nov. 2017 à 09:48
Bonjour,

Je souhaiterai renommer des fichiers sous le format AAAAMMJJ puis nom du fichier puis extension.

j'arrive à récupérer grace à un programme sur un forum la date puis le nom et l'extension mais je n'arrive pas à inverser la date. pourriez vous m'indiquer la ligne de commande et ou la placer dans mon programme svp. J''ai essaye de créer une variable dinv = %d:~6,4% %d:~3,2%
%d:~0,2%
mais cela ne fonctionne pas.

Voci mon code :

@echo off

set extension=JPG
setlocal enableDelayedExpansion
rem
rem dir /T:C pour avoir la date de création et non de modification
rem
for /F "tokens=1,2,3,*" %%a in ('dir /T:C *.%extension%^|findstr ".%extension%$"') do (
rem
rem on transforme la date JJ/MM/AAAA en JJ-MM-AAAA
rem parce que / et : sont interdits dans un nom de fichier
rem
set d=%%a
set d=!d:/=-!
rem
rem on recupère le nom du fichier sans l'extension
rem
set nom=%%~nd
rem
rem on renomme avec des " si il y a des noms avec espaces
rem
ren "%%d" "!d!_!nom!.%extension%")

merci pour votre aide.

5 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 4 nov. 2017 à 15:31
bonjour, "cela ne fonctionne pas" = ? messager d'erreur, résultat inattendu, ...?
0
En faisant echo dinv jai un 6,4 qui apparait ... jessaie ensuite de faire d=dinv
Aucun resultat sur le renommage du fichier
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
5 nov. 2017 à 08:23
hello
C:> date /t
05/11/2017

C:> echo %date:~6,4%%date:~3,2%%date:~0,2%
20171105
0
Ce n'est pas la date du joir que je recuperer mais la date de creation donc une chaine de caractere.
0
Ce n'est pas la date du jour que je recupere mais la date de creation donc une chaine de caractere
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
5 nov. 2017 à 11:00
quel est le format de la chaine ?
remplacer date par d
0
Si tu copies mon programme et que tu mets un :

dinv=%d:~6,4%%d:~3,2%%d:~0,2%

et à la fin un
ren "%%d" "!dinv!_!nom!.%extension%")

cela ne fonctionne pas.
je n'ai aucun resultat.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
5 nov. 2017 à 12:18
essayer avec (i majuscule)
...findstr /I ".%extension%$"'
0
Cedric > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
5 nov. 2017 à 12:47
Bonjour,
Toujours la date au format jour mois année...
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
5 nov. 2017 à 13:18
enlever le echo devant ren si c'est ok
@echo off
set extension=JPG
setlocal enableDelayedExpansion
for /F "tokens=1,2,3,*" %%a in ('dir /T:C *.%extension%^|findstr /I ".%extension%$"') do (
set d=%%a
set d=!d:~6,4!!d:~3,2!!d:~0,2!
set nom=%%~nd
echo ren "%%d" "!d!_!nom!.%extension%")

0
cedric > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
5 nov. 2017 à 16:04
Merci beaucoup ,
Dernière petite chose,

peux tu me mettre les tirets stp entre année mois et date :-).

Dans le programme du haut, celà y était, alors j'y connais pas grand chose, j'ai tenté d'insérer la ligne
set d=!d:/=-!
mais aucun succès, la date reste sans tiret.

Merci
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 nov. 2017 à 12:06
remplacer
set d=!d:~6,4!!d:~3,2!!d:~0,2!

par
set d=!d:~6,4!-!d:~3,2!-!d:~0,2!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 nov. 2017 à 08:45
chez moi, c'est bien la date du fichier qui est dans le rename
0
Je viens de voir qu'en fait des que je copie de mon iphone vers un dossier, la date de creation devient celle du jour.
Il faut que je recupere la date de modification en fait qui ne change pas quand je copie.
Quel parametre changer dans ma boucle for pour la recuperer ?
Merci par avance
0
Avec un T:W last written ca fonctionne
0