Durée de vie d'un fichier

Résolu
pafdantafass Messages postés 3015 Statut Contributeur -  
pafdantafass Messages postés 3015 Statut Contributeur -
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

--
Paf d'Antafass
L'auréole parce qu'on la voit bien!
Configuration: Xbox 360 pack premium Toshiba Satellite P300D vista intégral 64

6 réponses

  1. Utilisateur anonyme
     
    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
  2. bugcrusher
     
    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
  3. Utilisateur anonyme
     
    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
  4. pafdantafass Messages postés 3015 Statut Contributeur 434
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    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
  7. pafdantafass Messages postés 3015 Statut Contributeur 434
     
    merci bien Bug, je connais pas le .vbs, mais c'est une bonne occasion de m'y mettre !!
    0