Durée de vie d'un fichier

Résolu/Fermé
pafdantafass Messages postés 2013 Date d'inscription mardi 3 février 2009 Statut Contributeur Dernière intervention 12 novembre 2015 - 4 sept. 2009 à 12:20
pafdantafass Messages postés 2013 Date d'inscription mardi 3 février 2009 Statut Contributeur Dernière intervention 12 novembre 2015 - 11 sept. 2009 à 08:28
Bonjour,
j'aimerais savoir s'il est possible de donner une durée de vie à un fichier.
je m'explique: dans un dossier partagé sur un serveur, je voudrais que les fichiers (ou dossiers) créés (ou importés) s'efface automatiquement au bout d'une journée par exemple.
merci de m'aider
A voir également:

6 réponses

Utilisateur anonyme
10 sept. 2009 à 21:53
Bon, ça tombe bien, j'avais encore 5 mn... :o)

Le v'là ton code :o)

Option Explicit
Dim FSO,File,FileColl,demodir
Dim Date1,Date2,Hour1,Hour2,vartemp,vardef
set FSO=CreateObject("Scripting.FileSystemObject")
Set demodir=FSO.GetFolder("D:\dig") 'ICI N'OUBLIE PAS DE METTRE LE BON CHEMIN
Set FileColl=demodir.files
For each file in filecoll
Date1=Now()
Date2=File.DateCreated
Hour1=DatePart("h",Date1)
Hour2=DatePart("h",Date2)
vardef=DateDiff("h",Date2,Date1)
if vardef > 24 then
file.delete(True)
end if
next


J'ai remplacé la date de modif par la date de création, sinon dans mon répertoire de test, le ménage ne se faisait pas correctement.

Voilivoilou...
2
Salut !

Définir une durée de vie pour un fichier lambda n'est pas possible en soi. En revanche, si tu veux nettoyer un répertoire sur un disque partagé, il te suffit d'écrire un petit batch qui fera le ménage, et de le mettre dans le scheduler du serveur concerné afin qu'il se lance à la fréquence que tu auras définie, toutes les 24 heures par exemple.
1
Utilisateur anonyme
10 sept. 2009 à 21:19
Bon, finalement, je t'ai fait un petit code de test pour que tu comprennes bien le principe



Option Explicit

'on définit nos variables
Dim FSO,File
Dim Date1,Date2,Hour1,Hour2,vardef
set FSO=CreateObject("Scripting.FileSystemObject")

'On va chercher le fichier et on recupere les parametres de date
Set File=FSO.GetFile("d:\mytest.txt")
Date1=Now()
Date2=File.DateLastModified

'on affiche les dates pour etre sur que ca marche (a enlever du script final)
wscript.echo Date1
wscript.echo Date2

'on fait la difference en heures entre la date du jour et l heure courante et la date de derniere modif du fichier
'cela nous donne un temps ecoule en heures

Hour1=DatePart("h",Date1)
Hour2=DatePart("h",Date2)
vardef=DateDiff("h",Date2,Date1)

'on teste pour savoir si le nombre d'heures ecoulees est superieur a 24

if vardef > 24 then
wscript.echo vardef
wscript.echo "LE FICHIER A PLUS DE 24 HEURES"

else
wscript.echo vardef
wscript.echo "LE FICHIER A MOINS DE 24 HEURES"

end if


Voilou ! Tu auras quelques petits ajustements à faire :

- balayer l'ensemble du repertoire au lieu de ne prendre qu'un seul fichier
- remplacer les affichages que j'ai mis par une action d'effacement du fichier.
- virer la partie "else". On s'en tape de savoir quoi faire si le fichier a moins de 24 heures, puisque justement on ne fait rien... :o)

Voilà, je vrois que je n'ai rien oublié.

Bon courage !
1
pafdantafass Messages postés 2013 Date d'inscription mardi 3 février 2009 Statut Contributeur Dernière intervention 12 novembre 2015 403
10 sept. 2009 à 15:02
merci de me répondre Bug.
Je t'explique: sur un serveur, j'ai un répertoire partagé qui permet beaucoup de choses, entre autre, il permet le transit de docs ou de fichiers lourds poste à poste (c'est vrai qu'on aurai pu procédé avec un partage poste à poste, mais vu le nombre de postes dans mon entreprise, la recherche du fichier aurait été longue..., les utilisateurs sont des buses acr ne veulent pas comprendre) . j'aimerais que, 24 heures après l'apparition d'un fichier dans ce répertoire, il disparaisse automatiquement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
10 sept. 2009 à 20:27
Je comprends mieux.

Dans ce cas, il faudrait ruser...

Je pense qu'un petit script en vbs ferait l'affaire mais j'ai pas trop le temps de t'écrire le code. Je te donne les grandes lignes.

- Stocker dans une variable la date et l'heure du jour
- Accéder au répertoire partagé contenant les fichiers
- Pour chaque fichierdans ce répertoire, récupérer la date et l'heure de création
- Si le delta entre la date / heure du jour et la date /heure de création est supérieur à 24 heures, alors supprimer le fichier
- passer au fichier suivant.

Voilà, j'espère que ça t'aide quand même un peu...
0
pafdantafass Messages postés 2013 Date d'inscription mardi 3 février 2009 Statut Contributeur Dernière intervention 12 novembre 2015 403
11 sept. 2009 à 08:28
merci bien Bug, je connais pas le .vbs, mais c'est une bonne occasion de m'y mettre !!
0