Page 1 sur 1
[R] Récupérer le nom d'un fichier.txt
Posté : mar. 03 juin 2008 10:46
par dorian
Bonjour,
Je travaille actuellement sur un programme créant un journal d'activité chaques jours. Les noms de ces fichiers textes sont structurés de la façon suivante JJ_MM_AA.txt
J'aimerais pouvoir supprimer les fichier datant de plus d'un mois.
Je pense pouvoir faire cela en utilisant la fonction
FileGetLongName
mais le problème que je recontre avec cette fonction, c'est qu'il faut connaitre les 6 premières lettres du nom du repertoire (ou fichier)
exemple de la fonction
$a = FileGetLongName(@HomeDrive & "\PROGRA~1\")
msgbox(0,"long file name", $a)
; probablement $a=C:\Programs Files
Je ne vois pas trop comment faire, j'avais pensé à utiliser la fonction
FileGetTime
mais il faut connaître le nom du fichier. Et cela pose le même problème

.
J'espère ne pas avoir été trop confus dans mes explications
Cordialement
Re: [..] Récupérer le nom d'un fichier.txt
Posté : mar. 03 juin 2008 11:59
par Tlem
Si vous connaissez le répertoire ou ce trouve ces fichiers, utilisez la fonction FileFindFirstFile pour récupérer le nom des fichiers.
Ensuite pour chaque nom de fichier décomposez le pour récupérer le mois et l'année (StringLeft ou StringRight ou StringMid ou encore mieux et plus simple StringSplit) afin de faire la comparaison entre le mois et l'année actuelle et enfin supprimer le fichier si il est du mois précédent ...
Re: [M] Récupérer le nom d'un fichier.txt
Posté : mer. 04 juin 2008 09:26
par dorian
Merci beaucoup de votre aide, j'ai réalisé un code, peut-être pas optimisé mais il fonctionne.
Code : Tout sélectionner
#include <File.au3>
#Include <Date.au3>
; le but est de supprimé tout les fichiers qui ne sont pas du même mois
;------------------RECUPE DATE SYSTEME----------------------
$date_encoder = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR)
$date = _Date_Time_FileTimeToArray($date_encoder)
$mois_pour_journal=StringFormat("%02d %02d:",$date[0])
;-----------------------------------------------------------
;-------------------Variables---------------------dim $file
dim $erreur
$chemin_journaux="C:\Documents and Settings\Mes Documents\journaux\"
;-------------------------------------------------
;cherche nom des fichiers présents dans $chemin_journaux
$search = FileFindFirstFile($chemin_journaux&"*.txt"); recupère les noms des fichiers textes
while 1
$file = FileFindNextFile($search)
$mois=StringMid($file, 4, 2) ;recup d'un morceau du nom.A partir du quatrième chiffre, on recup 2 chiffres
; on "encode" les variables de la même façon car cause de conflit lors du test d'égalité
$mois2= StringFormat("%02d %02d:", $mois)
$mois3 = StringFormat("%02d %02d:", $mois_pour_journal)
;si $file ne retourne rien
if $file=""then
exitloop;sortie boucle
endif
if $mois2=$mois3 then ;si les mois correspondent on ne fait rien
else ;sinon on supprime le fichier
$file1=$chemin_journaux&$file
filedelete($file1)
endif
wend
fileclose($search)
Re: [R] Récupérer le nom d'un fichier.txt
Posté : mer. 04 juin 2008 12:07
par Tlem
Regardez si cela peut être simplifié comme ceci :
Code : Tout sélectionner
Dim $chemin_journaux = "C:\Documents and Settings\Mes Documents\journaux\"
;cherche nom des fichiers présents dans $chemin_journaux
$search = FileFindFirstFile($chemin_journaux & "*.txt")
While 1
$file = FileFindNextFile($search)
; si $file ne retourne rien
If $file = ""then
ExitLoop ; sortie boucle
EndIf
If @MON <> StringMid($file, 4, 2) Then FileDelete($file)
WEnd
FileClose($search)
Re: [R] Récupérer le nom d'un fichier.txt
Posté : mer. 04 juin 2008 16:39
par dorian
Je test cela dès que possible