VIVEZ LE
FOOTBALL !

Posez votre question Signaler

Renommer un fichier avec date du jour

Subira - Dernière réponse le 29 oct. 2009 à 09:49
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 ???
Lire la suite 

Renommer un fichier avec date du jour »

Suggestions
33 réponses
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
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
Max - 9 août 2007 à 18:11
Merci beaucoup, tres bon post!
Attention quand même aux paramètres linguistiques du poste, le format de la date peut varier...
adslogique - 29 oct. 2009 à 09:49
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
Skaper - 28 oct. 2009 à 10:40
ça tourne nickel!!
Merci beaucoup!!!
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 @+
Ajouter un commentaire
Réponse
+0
moins plus
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
saadmohamed- 19 nov. 2002 à 14:46
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é, @+
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

un sujet similaire a été traité dans PROGRAMMATION :
http://www.commentcamarche.org/forum/affich.php3?cat=3&ID=171991&page=2

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 ...

Olivier Fournier
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir Subira, Olivier, bonsoir à tous,

Merci Olivier ! ;-)

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

@12C4
Ipl
Ajouter un commentaire
Réponse
+0
moins plus
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 !
 :,§_ ç _
(@)=(@)
Ajouter un commentaire
Réponse
+0
moins plus
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 @+
Ajouter un commentaire
Réponse
+0
moins plus
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 @+
Ajouter un commentaire
Réponse
+0
moins plus
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
saadmohamed- 20 nov. 2002 à 14:14
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é, @+
Ajouter un commentaire
Réponse
+0
moins plus
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 !!!
Ajouter un commentaire
Réponse
+0
moins plus
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.
 :,§_ ç _
(@)=(@)
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « renommer un fichier avec date du jour » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
renommer un fichier avec date du jour - page 2