Page 1 sur 1
[R] Supprimer le plus ancien dossier
Posté : lun. 24 janv. 2011 15:43
par richie6700
Bonjour!!!
J'ai un problème de script... Voici mon soucis
J'effectue une sauvegarde tous les Vendredi de plusieurs serveurs. Ces sauvegarde je les enregistre dans \\ServeurSave\save\MonserveurX. MonserveurX est le nom du serveur que je sauvegarde. En bref voici l'arborescence.
\\ServeurSave\save\Monserveur1\Vendredi20100114
\\ServeurSave\save\Monserveur1\Vendredi20100121
\\ServeurSave\save\Monserveur2\Vendredi20100114
\\ServeurSave\save\Monserveur2\Vendredi20100121
etc etc
Vous imaginer bien que à partir d'un moment les sauvegardes s'accumulent, s'accumulent. Ce qui m'arrange pas réellement. Je souhaiterais dans chaque MonserveurX garder 4 dossier Vendrediaammjj et a chaque fois supprimer le plus ancien.
Voici le script que j'ai. Je sais il est faux, c'est peut être n'importe quoi. Mais pouvez vous me dire comment faire??
Bien evidemment ces scripts je ne les ai pas fait tous seul. J'ai eu l'aide de plusieurs utilisateur du forum dans un autre post que j'ai créer. Voici l'adresse pour ceux a qui sa interesse :
http://www.autoitscript.fr/forum/viewto ... 6&start=20
Et voici mon script
► Afficher le texte
Code : Tout sélectionner
#Include <File.au3>
$BackupDir = "\\ServeurSave\save\" ;chemin ou se trouve les fichiers
$aBackupDir = _FileListToArray($BackupDir, "*" , 2) ;liste tous les dossiers
Dim $ServersName = ("MonServeur1,MonServeur2 ")
$ServersName = StringSplit($ServersName, ",")
For $i = 1 to UBound($ServersName) - 1
Local $DayBackupPath = $BackupDir & "\" & $ServersName[$i]
Next
If $DayBackupPath > 4 Then ;si il y a plus de 4 dossier alors supprimer le plus ancien
For $i = 1 to $aBackupDir[0]- 4 ; pour ne garder que les 4 derniers dossiers.
MsgBox(0, '', 'Dossier à supprimer : ' & @CRLF & $BackupDir & $aBackupDir[$i])
Next
EndIf
Merci!!
PS: Je ne suis pas fort en script

Re: [...] Supprimer le plus ancien dossier
Posté : lun. 24 janv. 2011 21:18
par Tlem
J'hésite entre une blague, ou un passage dans la quatrième dimension ...
http://www.autoitscript.fr/forum/viewto ... 000#p43000
Re: [...] Supprimer le plus ancien dossier
Posté : lun. 24 janv. 2011 21:33
par FernandG
Héhé
La patience est une vertue .... mais aussi l'art d'espérer
Aller, comme tout vient à qui sait attendre y compris dans l'au delà ou dans une quatrième dimension :
viewtopic.php?f=3&t=2493.
Bonne soirée.
"Un moment de patience peut préserver de grands malheurs, un moment d'impatience détruire toute une vie."
Re: [...] Supprimer le plus ancien dossier
Posté : mar. 25 janv. 2011 10:37
par richie6700
Ah... Bonjour vous....
Tlem ton code m'a vachement aidé... mais ce que je veux savoir c'est comment lister le plus ancien dossier contenu dans \MonserveurX\Vendredi. Sachant que MonserveurX= plusieurs serveurs...
Re: [...] Supprimer le plus ancien dossier
Posté : mar. 25 janv. 2011 16:28
par richie6700
J'ai refait mon script. Il fonctionne presque...
Dans ServeurX\Vendredi j'ai Vendredi20110114,vendredi20110121..... pourquoi il ne me supprime pas les plus vieux??
► Afficher le texte
Code : Tout sélectionner
#Include <File.au3>
#Include <Array.au3>
$BackupDir = "D:\Backup\"
Dim $ServersName = ("Serveur1\Vendredi,Serveur2\Vendredi")
$ServersName = StringSplit($ServersName, ",")
For $i=1 to $ServersName[0]
Dim $rep = ($BackupDir & $ServersName[$i])
$aBackupDir = _FileListToArray($rep, "*" , 2)
If $aBackupDir[0] > 4 Then
For $j=1 to $aBackupDir[0] - 4
MsgBox(4096,"","il faut supprimer" & @CRLF & $aBackupDir & $aBackupDir[$i])
Next
EndIf
Next
Re: [...] Supprimer le plus ancien dossier
Posté : mar. 25 janv. 2011 19:17
par FernandG
Bonsoir,
De combien de Vendredi2010???? avez-vous dans votre dossier
ServeurX\Vendredi ?
Car tant que la limite de plus de 4 dossiers n'est pas vérifié aucun dossier ne sera supprimé.
Code : Tout sélectionner
For $j=1 to $aBackupDir[0] - [b][u][color=#FF0040]4[/color][/u][/b]
Bonne soirée.
AutoItement.
Re: [...] Supprimer le plus ancien dossier
Posté : mar. 25 janv. 2011 22:09
par richie6700
J'ai 5 dossiers. Le prob c'est qu'il m'affiche bien des dossiers à supprimer mais jamais le bon. Du style dans monserveur1 il affiche le premier dossier de la liste, dans Monserveur2 le 2ieme de la liste etc etc.
Re: [...] Supprimer le plus ancien dossier
Posté : mar. 25 janv. 2011 22:51
par FernandG
Bonsoir,
En reprenant le code de
Tlem et en le modifiant légèrement pour test, tout me semble correct
► Afficher le texte
Code : Tout sélectionner
#Include <File.au3>
$BackupDir = @DesktopDir & "\TestBackup\Vendredi"
If Not FileExists($BackupDir & "\20110101") Then DirCreate($BackupDir & "\20110101")
If Not FileExists($BackupDir & "\20110102") Then DirCreate($BackupDir & "\20110102")
If Not FileExists($BackupDir & "\20110103") Then DirCreate($BackupDir & "\20110103")
If Not FileExists($BackupDir & "\20110104") Then DirCreate($BackupDir & "\20110104")
If Not FileExists($BackupDir & "\20110105") Then DirCreate($BackupDir & "\20110105")
If Not FileExists($BackupDir & "\20110106") Then DirCreate($BackupDir & "\20110106")
$aBackupDir = _FileListToArray($BackupDir, "*" , 2)
If $aBackupDir[0] > 4 Then
For $i = 1 to $aBackupDir[0] - 4 ; pour ne garder que les 4 derniers dossiers.
MsgBox(0, '', 'Dossier à supprimer : ' & @CRLF & $BackupDir & $aBackupDir[$i])
Next
EndIf
Essayer-le.
Bonne soirée.
Re: [...] Supprimer le plus ancien dossier
Posté : mer. 26 janv. 2011 10:52
par richie6700
C'est bon j'ai réussi grâce à votre aide !!!
► Afficher le texte
Code : Tout sélectionner
#Include <File.au3>
#Include <Array.au3>
$BackupDir = "D:\Backup\"
Dim $s1 = "Server1\"
$as1 = _FileListToArray( $BackupDir & $s1,"*",2)
Dim $s2 = "Server2\"
$as2 = _FileListToArray ($BackupDir & $s2,"*",2)
Dim $s3= "Server3\"
$as3 = _FileListToArray ($BackupDir & $s3,"*",2)
If $as1[0] > 4 Then ;si il ya plus de 4 fichiers dans Vendredi alors supprimer "l'ancien"
For $i=1 to $as1[0] - 4
;~ MsgBox(4096,"","il faut supprimer dans " & $BackupDir & $s1 & @CRLF & $as1[$i])
DirRemove($BackupDir & $s1 & $as1[$i],1)
Next
EndIf
If $as2[0] > 4 then
For $j=1 to $as2[0] - 4
MsgBox(4096,"","il faut supprimer dans " & $BackupDir & $s2 & @CRLF & $as2[$j])
Next
EndIf
If $as3[0] > 4 then
For $z=1 to $as3[0] - 4
MsgBox(4096,"","il faut supprimer dans " & $BackupDir & $s3 & @CRLF & $as3[$z])
Next
EndIf
Merci!!!!!!!!
Re: [R] Supprimer le plus ancien dossier
Posté : mer. 26 janv. 2011 13:08
par FernandG
richie6700 a écrit :C'est bon j'ai réussi grâce à votre aide !!!
Heu .... Merci à
Tlem plutôt
Bonne journée.