[..] Supprimer parmi plusieurs fichiers le plus ancien

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
nicop83
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 09 nov. 2017 20:11
Status : Hors ligne

[..] Supprimer parmi plusieurs fichiers le plus ancien

#1

Message par nicop83 » mer. 06 nov. 2019 21:57

Bonjour,

j'aurais besoin de vos lumières , je voudrais supprimer des fichiers d'archives de logs pour éviter de saturer l'espace disque.
J'ai commencé par ceci:
Local $aArray = _FileListToArray(@DesktopDir, "*.log", $FLTA_FILES, True)
_ArrayDisplay($aArray)
jusque là tout va bien,j'arrive à entrer la liste de mes fichiers dans un tableau...
Après je suis parti sur :
For $i = 1 To $aArray[0]
        $ArrayTime = StringSplit(FileGetTime($aArray[$i], $FT_CREATED, $FT_STRING), " ")
        ; _ArrayDisplay($ArrayTime)
Next
je pensais récupérer la date sous la forme YYYYMMDDHHMMSS et ensuite faire une comparaison entre chaque forme numérique et supprimer le fichier qui a le plus petit FileGetTime, mais là je suis perdu....
merci d'avance pour toute l'aide que vous pourrez m'apporter
Nicolas

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 721
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: [..] Supprimer parmi plusieurs fichiers le plus ancien  

#2

Message par walkson » jeu. 07 nov. 2019 01:41

Bonjour,
Ça serait bien de mettre un code complet avec les includes !
Il y a surement plus simple
#include <Array.au3>
#include <File.au3>
#include <FileConstants.au3>
#include <Date.au3>

Local $aArray = _FileListToArray(@DesktopDir, "*.*", $FLTA_FILES, True)
_ArrayColInsert($aArray, 1);ajout d'une colonne
_ArrayDisplay($aArray)

For $i = 1 To $aArray[0][0]
        $aArrayDate = FileGetTime($aArray[$i][0], $FT_MODIFIED, $FT_ARRAY );sur modifié car le créé est parfois faux, renvoie un array YYYY MM DD HH MM SS
       $aArray[$i][1] = _DateDiff("h", $aArrayDate[0] & "/" & $aArrayDate[1] & "/" & $aArrayDate[2] & " " & $aArrayDate[3] & ":" & $aArrayDate[4] & ":" & $aArrayDate[5],_NowCalc())
                ;enregistre dans la col 1 la différence entre le moment présent et la date du fichier en heure
                ;on peut calculer en heure, seconde, en jour etc... voir l'aide
Next
_ArraySort($aArray,1,0,0,1) ;trie sur colonne 1 du + ancien au plus récent
_ArrayDisplay($aArray)

;For $i = 1 To UBound($aArray) - 1
        ;If $aArray[$i][1] > 100 Then FileDelete($aArray[$i][0])
        ;Si fichier créé depuis plus de 100h, on supprime (par exemple)
;Next
Le trie permet de supprimer d'office le plus ancien ($aArray[0][0])
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11443
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Supprimer parmi plusieurs fichiers le plus ancien

#3

Message par Tlem » jeu. 07 nov. 2019 07:54

Bonjour.
il y a aussi cette solution
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é".

Avatar du membre
nicop83
Niveau 1
Niveau 1
Messages : 4
Enregistré le : jeu. 09 nov. 2017 20:11
Status : Hors ligne

Re: [..] Supprimer parmi plusieurs fichiers le plus ancien

#4

Message par nicop83 » jeu. 07 nov. 2019 08:59

Bonjour,

merci pour ces deux solutions, je me suis entêté à garder le format de la date en type String pensant que la comparaison serait plus facile :( .
merci à vous deux.
Bonne journée.

Répondre