Page 1 sur 1

[..] Supprimer parmi plusieurs fichiers le plus ancien

Posté : mer. 06 nov. 2019 21:57
par nicop83
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

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

Posté : jeu. 07 nov. 2019 01:41
par walkson
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])

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

Posté : jeu. 07 nov. 2019 07:54
par Tlem
Bonjour.
il y a aussi cette solution

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

Posté : jeu. 07 nov. 2019 08:59
par nicop83
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.