Re: Nettoyage auto de vieux fichiers ???
Le
toon
Ce message provient de "microsoft.public.windows.server.administration".
Le but du script est de supprimer dans un repertoire d'echange temporaire,
tous les fichiers de plus de 30 jours (en modification).
D'avance merci pour votre aide !!!
Je continue tout de meme mes investigations dans le vaste monde du vbs :- )
J'arrive a descendre dans un niveau de repertoire avec le script ci-dessous,
mais comment faire pour descendre dans dix niveaux de sous repertoire par
exemple ???
Le programme ci-dessus affiche juste les fichiers sans les effaces, c'est
juste une phase de mise au point.
J'ai beau chercher comme un ouf dans tous les sens, je ne trouve pas. Meme
en m'inspirant des scripts du "System Administration Scripting Guide" de
Microsoft, j'ai du mal. Pourtant c'est pas faute d'essayer.
Faut vraiment que je progresse en VBS !!!
****************************************
Dim fso, oFolder, colFiles, colFolders, file, folder, colSubfolders1
Const MON_DOSSIER_ECHANGE = "c:\vbs"
Const DELAI0 'en jours
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(MON_DOSSIER_ECHANGE)
Set colSubfolders = objFolder.Subfolders
'*DEBUT DU PROGRAMME
TestFile
For Each objSubfolder in colSubfolders
TestFileSubfolder
Next
'*SOUS PROGRAMME
Sub TestFile
Set colFiles = objFolder.Files
For Each file in colFiles
Wscript.echo file
'Test sur la date de dernière modif
'If DateDiff("d", file.DateLastModified, Now)>DELAI Then
'file.delete(True)
'Wscript.echo file
'End if
Next
End Sub
Sub TestFileSubfolder
Set colFiles = objSubFolder.Files
For Each file in colFiles
Wscript.echo file
'Test sur la date de dernière modif
'If DateDiff("d", file.DateLastModified, Now)>DELAI Then
'file.delete(True)
'Wscript.echo file
'End if
Next
End Sub
****************************************
"jmh" <jmh@inria.fr> a écrit dans le message de news:
O8#$MVPvEHA.2116@TK2MSFTNGP14.phx.gbl
> toon a écrit :
> > Bonjour.
> >
> > J'ai mis en place sur un de mes serveurs, une zone d'echange de fichier
> > temporaire que je compte purger regulierement. L'objectif etant de
supprimer
> > par exemple toute les semaines, tous les fichiers qui auraient plus d'un
> > mois d'existence.
> > Une zone d'echange temporaire quoi !!!
> >
> > Si vous avez une idee, je suis preneur. Je cherche en ce moment sur des
> > scripts en kixtart, avant de me mettre serieusement au vbs.
> >
> >
> Sauf erreur de frappe voila un début de solution qui pourrait convenir :
>
> mon_script.vbs :
> -
> Const MON_DOSSIER_ECHANGE = "z:\chemin\blabla"
> Const DELAI0 'en jours
> Dim fso, oFolder, colFiles, file
>
> Set fso = createobject("Scripting.FileSystemObject")
> Set oFolder = fso.GetFolder(MON_DOSSIER_ECHANGE)
> Set colFiles = oFolder.Files
>
> For Each file In colFiles
> 'Test sur la date de dernière modif
> If DateDiff("d", file.DateLastModified, Now)>DELAI Then
> file.delete(True)
> end if
>
> 'ou bien test sur la date de création
> 'If DateDiff("d", file.DateCreated, Now)>DELAI Then
> ' file.delete(True)
> 'end if
> Loop
>
> Set colFiles = Nothings
> Set oFolder = Nothing
> Set fos = Nothing
> -
>
> A lancer chaque jour avec la plannificateur de tache :
> cscript //nologo //batch mon_script.vbs
>
> L'étape suivante : parcourir une arborescence de répertoire, plutot q'un
> seul..un bon début pour commencer avec les scripts
>
>
> Ce script n'a pas été testél'utiliser n'engage que celui qui
> l'utilise ! perte de donnée..blablabla
> bye
Le but du script est de supprimer dans un repertoire d'echange temporaire,
tous les fichiers de plus de 30 jours (en modification).
D'avance merci pour votre aide !!!
Je continue tout de meme mes investigations dans le vaste monde du vbs :- )
J'arrive a descendre dans un niveau de repertoire avec le script ci-dessous,
mais comment faire pour descendre dans dix niveaux de sous repertoire par
exemple ???
Le programme ci-dessus affiche juste les fichiers sans les effaces, c'est
juste une phase de mise au point.
J'ai beau chercher comme un ouf dans tous les sens, je ne trouve pas. Meme
en m'inspirant des scripts du "System Administration Scripting Guide" de
Microsoft, j'ai du mal. Pourtant c'est pas faute d'essayer.
Faut vraiment que je progresse en VBS !!!
****************************************
Dim fso, oFolder, colFiles, colFolders, file, folder, colSubfolders1
Const MON_DOSSIER_ECHANGE = "c:\vbs"
Const DELAI0 'en jours
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(MON_DOSSIER_ECHANGE)
Set colSubfolders = objFolder.Subfolders
'*DEBUT DU PROGRAMME
TestFile
For Each objSubfolder in colSubfolders
TestFileSubfolder
Next
'*SOUS PROGRAMME
Sub TestFile
Set colFiles = objFolder.Files
For Each file in colFiles
Wscript.echo file
'Test sur la date de dernière modif
'If DateDiff("d", file.DateLastModified, Now)>DELAI Then
'file.delete(True)
'Wscript.echo file
'End if
Next
End Sub
Sub TestFileSubfolder
Set colFiles = objSubFolder.Files
For Each file in colFiles
Wscript.echo file
'Test sur la date de dernière modif
'If DateDiff("d", file.DateLastModified, Now)>DELAI Then
'file.delete(True)
'Wscript.echo file
'End if
Next
End Sub
****************************************
"jmh" <jmh@inria.fr> a écrit dans le message de news:
O8#$MVPvEHA.2116@TK2MSFTNGP14.phx.gbl
> toon a écrit :
> > Bonjour.
> >
> > J'ai mis en place sur un de mes serveurs, une zone d'echange de fichier
> > temporaire que je compte purger regulierement. L'objectif etant de
supprimer
> > par exemple toute les semaines, tous les fichiers qui auraient plus d'un
> > mois d'existence.
> > Une zone d'echange temporaire quoi !!!
> >
> > Si vous avez une idee, je suis preneur. Je cherche en ce moment sur des
> > scripts en kixtart, avant de me mettre serieusement au vbs.
> >
> >
> Sauf erreur de frappe voila un début de solution qui pourrait convenir :
>
> mon_script.vbs :
> -
> Const MON_DOSSIER_ECHANGE = "z:\chemin\blabla"
> Const DELAI0 'en jours
> Dim fso, oFolder, colFiles, file
>
> Set fso = createobject("Scripting.FileSystemObject")
> Set oFolder = fso.GetFolder(MON_DOSSIER_ECHANGE)
> Set colFiles = oFolder.Files
>
> For Each file In colFiles
> 'Test sur la date de dernière modif
> If DateDiff("d", file.DateLastModified, Now)>DELAI Then
> file.delete(True)
> end if
>
> 'ou bien test sur la date de création
> 'If DateDiff("d", file.DateCreated, Now)>DELAI Then
> ' file.delete(True)
> 'end if
> Loop
>
> Set colFiles = Nothings
> Set oFolder = Nothing
> Set fos = Nothing
> -
>
> A lancer chaque jour avec la plannificateur de tache :
> cscript //nologo //batch mon_script.vbs
>
> L'étape suivante : parcourir une arborescence de répertoire, plutot q'un
> seul..un bon début pour commencer avec les scripts
>
>
> Ce script n'a pas été testél'utiliser n'engage que celui qui
> l'utilise ! perte de donnée..blablabla
> bye

Poser une question


Il faut essayer la récursion. Je n'ai pas testé en VB Script mais il n'y a
pas de raison que cela ne fonctionne pas.
Quelque chose comme :
Sub TraiterDossier(oFolder)
For each oFile in oFolder.Files
bla bla
Next
For each oSubFolder in oFolder.SubFolders
TraiterDossier oSubFolder
Next
End Sub
"toon" news:%
Descendre d'un niveau je sais faire ... mais de plusieur niveaux, 10 par
exemple, je sais pas !!!
Merci quand meme :- )
"Fred"
Je me suis inspire du script de ce site :
http://www.borncity.de/WSHBazaar/WS...olders.htm
L'adaptation devrait etre facile desormais.
Merci a toutes les personnes qui se sont interesse de pres ou de loin a mon
probleme.
"toon" #
Le squelette de script que j'avais proposé descend dans autant de niveaux
que nécessaire.
La seule limite est la mémoire disponible pour effectuer les appels
récursifs (La procédure TraiterDossier s'appelle elle même).
Dans le script que vous avez trouvé, c'est exactement le principe qui est
utilisé.
"toon" news:
de recursivite !!!
Merci ;- )
"Fred" #