[R] Récupérer le nom d'un fichier.txt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
dorian
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 21 mai 2008 17:09
Status : Hors ligne

[R] Récupérer le nom d'un fichier.txt

#1

Message 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
Modifié en dernier par dorian le mer. 04 juin 2008 09:44, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer le nom d'un fichier.txt

#2

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

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
dorian
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 21 mai 2008 17:09
Status : Hors ligne

Re: [M] Récupérer le nom d'un fichier.txt

#3

Message 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)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer le nom d'un fichier.txt

#4

Message 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)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
dorian
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 21 mai 2008 17:09
Status : Hors ligne

Re: [R] Récupérer le nom d'un fichier.txt

#5

Message par dorian »

Je test cela dès que possible
Répondre