Page 1 sur 1

[R] Script pour supprimer des dossiers de plus de x jours

Posté : jeu. 04 sept. 2008 15:13
par westbam
salut , j'ai une petite question.
sur un serveur win2003 , j'ai un repertoire contenants des dossiers de sauvegardes.
le hic est que cela prend beaucoup de place avec le temps .
je cherche un moyen de faire un roulement avec un script en taches planifiers, qui supprime automatiquement les fichiers ayant par exemple plus de 15jours ....

quelqu'un a une idée , pour la mise en oeuvre ???

merci d'avance

cordialement

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : jeu. 04 sept. 2008 17:51
par jbnh
Salut, avec ms dos on peut tout faire.

Par exemple : pour lister tous les dossiers d'un endroit (disons C:\), faire: cd c:\ puis dir /ad et ensuite : dir > myfile.txt pour avoir toutes les infos dans un txt. Il suffira alors de faire un petit tri pour récupérer les dates de créations.

Ca t'intéresse?

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : jeu. 04 sept. 2008 19:31
par tolf
_FileListToArray pour lister tous les fichiers d'un dossier (après pour explorer les sous-dossiers utilise les résultats (fichiers et dossiers) de cette fonction).

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : jeu. 04 sept. 2008 20:02
par jbnh
@tolf, ca servirai à quoi d'avoir sous forme d'array la liste des dossiers?

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : jeu. 04 sept. 2008 23:07
par sylvanie
Le tableau, c'est un peu lourd en effet...
pour sélectionner les dossier à supprimer soit on parse le fichier sortie avac des stringsplits.
Ou bien, on a joute /B (affichage des nom de rep tout court) et on utilise FileGetTime sur chaque rep

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : jeu. 04 sept. 2008 23:28
par Tlem
sylvanie a écrit :Le tableau, c'est un peu lourd en effet...
C'est peut être lourd, mais c'est déjà tout fait. :P
http://www.autoitscript.fr/forum/viewto ... f=21&t=479
Rapide et tellement simple à l'utilisation ...

@jbnh : Batch c'est effectivement bien, mais avec des noms avec accent et autre, ça ne fonctionne pas bien du tout. :lol:

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : ven. 05 sept. 2008 08:24
par jbnh
OK je suis bien d'accord, mais le but n'est-t-il pas de checker la date de tous les fichiers? Comment vous vous y prenez par la suite?

Re: [..] script supprimer des dossiers ayant plus de x jours

Posté : ven. 05 sept. 2008 22:00
par Tlem
Comme ceci :

Code : Tout sélectionner

#include<_FileListToArrayNew2h.au3>
#include <Date.au3>

Dim $ListFile = _FileListToArray3 ("c:\RepX", "*.txt", 1, 1, 1,"Temp|TMP")

For $i = 1 to $ListFile[0]
    $T = FileGetTime($ListFile[$i], 1) ; On récupère la date de création.
    $FTime = $t[0] & "/" & $t[1] & "/" & $t[2] & " " & $t[3] & ":" & $t[4] & ":" & $t[5] ; On convertit la date pour le _DateDiff.
    IF _DateDiff('D', $FTime, _NowCalc()) > 15 Then FileDelete($ListFile[$i]) ; Contrôle de la différence de jours et suppression.
Next
Attention ce script supprime des fichiers, à essayer avec une grande prudence.

Re: [..] Script pour supprimer des dossiers de plus de x jours

Posté : ven. 05 sept. 2008 22:18
par sylvanie
un consolewrite à la place du FileDelete serait en effet pas mal dans un premier temps pour tester ^^
par contre à vu d'oeuil ça ne gère pas le récursif, ou je me trompe ?
ceci dit selon le contexte, on n'en a peut être pas besoins.

Re: [..] Script pour supprimer des dossiers de plus de x jours

Posté : ven. 05 sept. 2008 22:24
par Tlem
La fonction _FileListToArray3() gére parfaitement le récursif. ;)

Code : Tout sélectionner

_FileListToArray3($sPath, $sFilter = "*", $iFlag = 0, $iRecurse = 0, $iBaseDir = 1, $sExclude = "")

Re: [..] Script pour supprimer des dossiers de plus de x jours

Posté : ven. 05 sept. 2008 23:13
par sylvanie
Autant pour moi,je n'avais pas fait attention au "3" de _FileListToArray3 ... qui est effectivement plus riche