Renommer un fichier avec date du jour [Fermé]

Signaler
-
Messages postés
1
Date d'inscription
vendredi 20 février 2015
Statut
Membre
Dernière intervention
11 mai 2017
-
J'aimerai faire une copie d'un fichier sous windows en le renommant et lui rajouter la date du jour style :
Fichier d'origine : toto.txt
Fichier de destination : toto_AAAAMMJJ.txt

Comment puis je le faire par une procédure que je puisse automatiser ???

25 réponses

Bon je sait que je repond a un vieux post, mais voici une solution toute simple :

Créer un fichier batch :
set mydate=%date:~6,4%%date:~3,2%%date:~0,2%
move toto.txt toto-%mydate%.txt

Place le fichier batch dans le dossier du fichier a renommer
11
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

> adslogique
Bonjour,
Sur le post ou vous répondez pour renommer un fichier en lui ajoutant la date, auriez vous l'argument pour ajouter les minutes ?

En vous remerciant
Merci beaucoup, tres bon post!
Attention quand même aux paramètres linguistiques du poste, le format de la date peut varier...
> Max
pour ce qui est du parametre de date (fr / en), perso j'utilise cette astuce que je décommente (rem) selon le type de date utilisé:

Set strdate=%DATE:/=%
Set strdate=%strdate: =%
rem - si english - Set strdate=%strdate:~3,8%
set annee=%strdate:~4,4%
set mois=%strdate:~2,2%
set jour=%strdate:~0,2%
set dixheure=%time:~0,1%
if "%dixheure%" equ " " set dixheure=0
set unitheure=%time:~1,1%
set heure=%dixheure%%unitheure%
set strdate=%annee%%mois%%jour%%heure%

move D:\monfichier.txt D:\monfichier%strdate%.txt
ça tourne nickel!!
Merci beaucoup!!!
Messages postés
1
Date d'inscription
vendredi 20 février 2015
Statut
Membre
Dernière intervention
11 mai 2017

merci beaucoup ça m'aide énormément avec une solution mise en place en 1/2h pour moi qui ne suis pas informaticien
fantastique !
Je ne sais pas si ma contribution peut apporter quelque chose mais comme je sais même pas écrire un petit programme, j'utilise un freeware (sous win98) qui s'appelle " the rename" extrèmement puissant qui peut modifier l'extension ou le nom de tous les fichiers d'un répertoire: on peut choisir date, heure, compteur incremental, ajouter ou renommer du texte, inverser minuscules majuscules, extraire des noms de fichiers MP3 (j'ai cru comprendre), enlever des espaces etc,renommer en fichiers courts; il y aurait aussi moyen de modifier et ajouter ses propres codes?
Voilà un exemple tiré de l'aide:
Situation: you want to rename a series of graphic files like

affiche98.JPG
back.jpg
bakgrunn.jpg
bunch1.jpg
ours.jpg
SAUT.jpg
topbkg.jpg

to a series of names like img00001.jpg, img00002.jpg, img00003.jpg. You also want the extension to be in lower case.

Choose Modify Prefix in the Prefix frame, click on tab Add a counter, leave beginning value and step at their original values and modify digits to 5. Then, click on Text tab and choose Replace with text and type img. In Extension frame, scroll to Lower case. Select files and click on Start. That's all!

This is why I made this program, to create this kind of file name.

Cela parait compliqué mais très simple à l'usage. L'auteur est Hervé Thouzard mais son site a déménagé. Il mérite d'être connu, en plus c'est gratuit et distribuable; j'ai du récupérer ça dans Freelog peut-être?

Patrice
Salut tous le monde,
C'est vrai pourquoi ne pas utiliser un petit prog qui ferait ça, moi je l'ai sauf que pour renommer, il ne prend que 8 caractères,
Faites moi signe si vous le voulez,

Salut et @+
Messages postés
5723
Date d'inscription
lundi 8 octobre 2001
Statut
Contributeur sécurité
Dernière intervention
14 avril 2012
568
Bonsoir Subira, bonsoir à tous,

C'est faisable avec un fichier .bat si tu entres la date en paramètre.

Quelque chose du genre (fichier Sauve.bat) :
@echo off
rem Sauve.bat AAAAMMJJ pour sauvegarder les fichiers
if %1.==. goto mess
for %%V in (C:\dossier\*.*) do copy C:\dossier\%%v *_%1.*
goto fin
:mess
echo il est nécessaire d'entrer la date AAAAMMJJ
:fin

où %1 est le paramètre qui te sert à lancer le .bat :
Sauve 20021118

@12C4
Ipl
Merci ipl , j'ai une bonne piste , tu n'aurai pas une astuce pour récupérer la date du jour en paramètre dans la procédure ???
peut etre en amont faire un style echo date > date.txt

Et ensuite dans le fichier .bat faire :
sauve date.txt (ou sauve est le fichier .bat)

Sinon je teste !!!

Merci encore
Messages postés
5723
Date d'inscription
lundi 8 octobre 2001
Statut
Contributeur sécurité
Dernière intervention
14 avril 2012
568
Rebonsoir Subira,

Non, je ne vois pas d'astuce en Dos ou sous Windows car la commande Date affiche "La date actuelle est Lun 18/11/2002 mais il pourrait bien y avoir un petit programme capable de n'afficher que la date (sans / qui est un caractère interdit dans le nom du fichier)... dans les temps anciens, j'avais un programme basic qui me faisait çà (bien sûr, il y a moyen de le faire sous plein d'autres langages... n'importe quel programmeur sait faire... du reste, c'était le sujet d'un fil de discussion il y a environ 2 semaines sur CCM)

Si tu obtenais un tel programme -appelons le date.com- (un programme qui afficherait la date du jour sous la forme AAAAMMJJ) :
Date|Sauve
ferait le travail !

- je ne crois pas qu'il y ait une variable d'environnement qui nous donne la date sous cette forme
- on pourrait se débrouiller aussi bien avec un progr. capable d'écrire le résultat dans un fichier.
- je ne pense pas qu'il y ait de problème avec la longueur du nom (supérieure à 8) si le travail est fait dans une fenêtre Dos c'est à dire en Dos sous Windows.

@12C4
Ipl
Bonjour à tous

Merci pour vos réponses éclairées.

Je suis preneur du petit programme qui fait cela meme si il il n'y a que 8 caractères !!!

JMS
Messages postés
7
Date d'inscription
mardi 3 septembre 2002
Statut
Membre
Dernière intervention
8 avril 2003

Re Salut,
Le prg je l'ai, je l'ai écris en Fox, il mesure 9704 octets, par contre il nécessite un run time un peu plus volumineux de 2 MO, je ne sais ou vous envoyer ces deux modules,

salut casablancais ensoleillé, @+
Messages postés
5862
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
18 janvier 2003
83
Messages postés
5723
Date d'inscription
lundi 8 octobre 2001
Statut
Contributeur sécurité
Dernière intervention
14 avril 2012
568
Bonjour Olivier, bonjour à tous,

>Un autre post parlait aussi d'un petit exe ou com donnant la date
>du jour sous DOS mais je n'arrive pas à le retrouver ...
Ne daterait-il pas de la période 4-16 novembre ? :-(

@12C4
Ipl
Messages postés
5723
Date d'inscription
lundi 8 octobre 2001
Statut
Contributeur sécurité
Dernière intervention
14 avril 2012
568
Bonjour saadmohamed,

>Re Salut,
>Le prg je l'ai, je l'ai écris en Fox, il mesure 9704 octets, par contre
>il nécessite un run time un peu plus volumineux de 2 MO, je ne
>sais ou vous envoyer ces deux modules,

Merci pour ta proposition !
Veux-tu bien m'envoyer les 2 modules à mon adresse e-mail ci-dessus (en remplaçant le 'à' par '@') ? merci !
Fox... n'est-ce pas un compatible dBase, mais avec compilateur -et runtime- ?

@12C4
Ipl
Messages postés
5723
Date d'inscription
lundi 8 octobre 2001
Statut
Contributeur sécurité
Dernière intervention
14 avril 2012
568
Zut... je vieillis !

J'ai encore gwbasic.exe, dBase III+ mais je me rends compte que je ne sais même plus les utiliser (pour un petit utilitaire) !
Je vais quand même essayer ! nom de nom !

@12C4
Ipl
Messages postés
5862
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
18 janvier 2003
83
Bonsoir,

dans dBase la fonction qui retourne la date du système est date()
il y en a huit autres (jour, mois, année, ...) utilisables dans des variables. Attention au bug de l'an 2000 avec les années en court (2 derniers chiffres/caractères) : dBase renvoit 01 comme 1901 donc avant 2000 ... !

J'ai des applis .PRG en language dbase III+ et dBase IV (idem Clipper compilable), sous les DOS 3 à 6.22 (compatibles setver) d'un gros boulot SGBD que j'ai fait en 1991-92 utilisant toutes sortes de variables dates, de fonctions et de choix pour trouver (recherches séquentielles) des données précises à un moment précis dans des tas de bases intégrées.

Exemple :
* ============================ TRANDAT.PRG ===================================
* fait par OF 16/3/91 comme utilitaire pour JTOT, etc...
* Transformation d' une date (DATED2) en nom de fichier DATEFIC.(mem, dbf,...)
* syntaxe: 00_00_00.xxx macro: &DATEFIC (+".xxx")
* ============================================================================

***************** version num‚rique (intervalle d‚termin‚) *******************

public DATOBS && * premiŠre DATE d‚finie
TJ1=day(FDATOBS) && * jour (Nø de 1 … 31)
TM1=month(FDATOBS) && * mois ( 1 … 12)
TANN=str(year(FDATOBS)) && * ann‚e de 90 … ..)
TAN=right(TANN,2) && * CaractŠres
VTA1=val(TAN) && * Num‚rique
*------------------------ par exemple dans rechagr.prg (ajout -> f-ajout)
do case
case TJ1 < 5 .and. TM1=1 && * bornes
TJ2=15 && *********
TM2=12
VTA2=VTA1 - 1
case TJ1 < 5 .and. TM1 > 1
TJ2=15
TM2=TM1 - 1
VTA2=VTA1
case TJ1 > 5 .and. TJ1 <= 10 .and. TM1=1
************* etc....
endcase
CTA1=str(VTA2)
DATAC=ltrim(str(TJ2))+"/"+ltrim(str(TM2))+"/"+ltrim(CTA1)

DATAD=ctod(DATAC) && * nouvelle date limite

return

* *********************** version caractŠres (nom de fichier) ****************

*public DATED2,DATEFIC,DATEFICM && * par exemple jtot1.prg (ajout, e-ajout)

TJO=day(CDATED2)
TMO=month(CDATED2)
TANN=str(year(CDATED2))
TAN=right(TANN,2)

DATEFIC=ltrim(str(TJO))+chr(95)+ltrim(str(TMO))+chr(95)+ltrim(TAN)
* Forme du nom du fichier: 1_1_90 ou 10_10_90 (suffixe .MEM)

DATEFICM=DATEFIC+".MEM" && stock‚s dans S/r‚pertoire VAR-MEM
return
* ============================================================================

Plus vous intéresse ?

Olivier Fournier
Messages postés
5723
Date d'inscription
lundi 8 octobre 2001
Statut
Contributeur sécurité
Dernière intervention
14 avril 2012
568
Bonsoir Subira, Olivier, bonsoir à tous,

Merci Olivier ! ;-)

Subira... as-tu dBase III ou supérieur ?

@12C4
Ipl
Messages postés
5038
Date d'inscription
dimanche 11 août 2002
Statut
Contributeur
Dernière intervention
3 décembre 2009
659
Je peux jouer aussi ?
Bon, bernadette, tui vas chercher sur http://www.rduff.com/ le petit programme Awk v3.20 et tu crées le fichier de programme awk ci dessous qu'on appellera Bonjour.awk (mais tu le raccourci comme tu veux et englobe dans une fichier bat si tu le désires).

#---------------------------------------------------------------------------
# FICHIER: Bonjour.AWK
# AUTEUR: M&M
# DESCRIPTION:
# Ce programme crée une copie d'un fichier donné en paramètre
# en ajoutant à son nom la date et l'heure et en conservant son extention
# SYNTAXE: awk -f bonjour.AWK monfichier.doc
# PREREQUIS:
# Le PC doit être configuré pour la date au format Belge ou français
# (Country=032 ou 033)
# OUTPUTS:
# il copie le fichier FICHIER.EXT sous le nom FICHIER_AAAAMMJJ.EXT
# Il crée et puis efface un fichier temporaire temp.tmp
# VERSION:
# 1.0 20/11/02 M&M Création
#---------------------------------------------------------------------------

BEGIN {
TMP="TEMP.TMP" # Fichier temporaire
IN_FILE = toupper(ARGV[1]) # ARGC-1] # Nom du fichier source
if (ARGC<2 || index(IN_FILE, ".") ==0 ) {
print "\nFichier à copier non defini ou extension manquante."
print "Usage: awk -f bonjour.awk fichier.doc"
Abort=1; exit }
else {
print "Pour avoir la date" > TMP
close (TMP)
system ("dir /4 "TMP" > " TMP)
# acquisition de la date de l'heure courante de win98
for (i=1;i<8;i++) {
getline < TMP
if (i> 4 && NF>=5) {
Date=$4; Time=$5
close(TMP)
break
}
}
if (i>7) {print "Erreur bonjour.awk: Date non trouvée."; Abort=1;exit}
}
match(IN_FILE,/\.[A-Za-z0-9\-_]+$/)
FILE= substr(IN_FILE,1,RSTART-1)
EXT=substr(IN_FILE,RSTART+1)
split(Date,DD,"\/")
Date=DD[3]DD[2]DD[1]
NEW=FILE"_"Date"."EXT
system ("copy "IN_FILE" "NEW)
exit
}
#---------------------------------------------------------------------------

Et voila, Subirou, je trouve que c'est horriblement compliqué par rapport aux outils des shells de unix. Laissons cet exercice aux jeunes, ofou !
 :,§_ ç _
(@)=(@)
Messages postés
7
Date d'inscription
mardi 3 septembre 2002
Statut
Membre
Dernière intervention
8 avril 2003

salut tous le monde,
ma vesrion à moi est la suivante:
*----------------------------------------------------------
parameter file

d = substr(dtoc(date()),7,4) + substr(dtoc(date()),4,2) + substr(dtoc(date()),1,2) + '.'

erase &d
rename &file to &d
return
*--------------------------------------
le prog recoit un fichier en paramétre est le renomme en date du jour,
PS: ce progr je l'ai compilé sous Fox 2.6, est j'en ai généré un EXE,
Je n'ai toujours pas d'@ mail pour vous l'envoyer,
Salut et @+
Messages postés
7
Date d'inscription
mardi 3 septembre 2002
Statut
Membre
Dernière intervention
8 avril 2003

Re Salut

Je réponds à O.Fournier, qu'il n'a jamais été question de bug au niveau de Dbase (on n'en fait que l'utilisation qu'on veut faire), il existe l'instruction SET CENTURY ON, qui permet d'afficher les années sur 4 car, ce qui permet de saisir 2000 au lieu de 00 pour 2000,
J'ai encore des appli Dbase qui tournent depuis la nuit des temps...
salut et @+
Messages postés
5862
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
18 janvier 2003
83
Bonjour,

OUAH !!! Heureusement en plus qu'on est pas dans le forum PROGRAMMATION !

Nous v'là retournés dans la douce folie dBase d'Ashton Tate (et de l'énorme boulot de "La Commande Electronique") lesquels ont été descendus en flammes par le business fou (finis aussi les Pascals et turbos !).

Subira est servi(e) !

Revenons juste sur un petit détail pour saadmohamed :
1) bien sûr pour "set century on" d'entrée (config.db)
2 mais la fonction LUPDATE() (dernière date d'accés à une base *.DBF) me retourne à l'écran : 1901 1902, etc ... Aïe les incrémentations de ces dates par des variables pour gérer les bases et leur accés périodique !
3) Et puis comme un imbécile j'avais fait des dizaines d'applis avec les dates courtes : mon SGBD me renvoyait depuis avant la guerre de 14 ... depuis le 01/01/2000 !

Olivier Fournier
Messages postés
7
Date d'inscription
mardi 3 septembre 2002
Statut
Membre
Dernière intervention
8 avril 2003

Re Salut tous le monde,
C'est vrai je viens de vérifier, LUPDATE renvoie une information érronnée (1902), on pourra y pallier en utiliser la date système DOS, un Dir du répértoire, suivi d'un append from dans un fichier DBF dont le dessin d'enreg est le meme que celui de la ligne Dir, et voila, la date est récupéré dans 3 chanmps de donnees qu'on peut triturer comme on veut...

Salut casablancais ensoleillé, @+
Bonsoir,

Je vous remercie tous, je vais essayer de trier dans toutes vos réponses , ce qui est sur c'est que je ne veux pas installer de run time sur ma machine !!!
Messages postés
5038
Date d'inscription
dimanche 11 août 2002
Statut
Contributeur
Dernière intervention
3 décembre 2009
659
Alors, adopte mon petit script Awk.exe qui pèse 47KB et tu fais un petit fichier DD.BAT qui contient cette ligne:

c:\util\awk -f c:\util\bonjour.awk %1

Tu mets tout dans un répertoire c:\util ou tout autre répertoire qui est dans le PATH et cela tourne quand tu tapes DD suivi tu nom du fichier à dater.

Petits bugs corrigés: j'ai utilisé l'instruction toupper qui fait que le résultat est en majuscule. (remplacer toupper(ARGV[1] par ARGV[1])
Autre bug corrigé: si l'extention contient un caractère accentué, il va canner. (remplacer [A-Za-z0-9\-_]+ par [^.]+ )
Dernier bug subsistant: si le nom contient le signe =, mon programme ne trouvera pas le fichier. (pas de parade)
Petit avantage: si le fichier contient plus d'un point dans le nom, il prend bien le dernier point comme séparateur d'extention
Il accepte aussi des noms long et des extentions plus longues que 3 caractères.
 :,§_ ç _
(@)=(@)
Messages postés
8
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
20 juin 2005

Bonjour,

Pour la date rendue pas LUPDATE, il faut ajouter l'instruction suivante en début de programme :

SET EPOCH TO 1960 (ou toute autre date charnière)

Cela indique à Clipper que toute date du style "18/05/04" devra être interprétée comme faisant partie de l'année 2004 et non 1904 puisque EPOCH est mis à 1960. Par contre, une date dont le numéro de l'année en 2 positions (xx) est antérieure à "60" sera considérée comme "19xx" et non pas "20xx".

Le mieux est d'utiliser :
SET CENTURY ON
ce qui force le système à travailler avec l'année exprimée en 4 chiffres. Là, il n'y a plus d'ambiguité pour déterminer le siècle par rapport à une année exprimée en 2 chiffres.