Archivage automatique de logs

celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008 - 5 mai 2008 à 16:58
celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008 - 6 mai 2008 à 20:28
Bonjour à tous,

Sur un serveur 2003, j'essaye de créer un script vbs qui m'archive les logs  d'une application de manière automatique suivant le mois de création et l'année.
Les fichiers sont de type : exAAMMJJ.log  (AnnéeMoisJour)
Le but est de créer un fichier LogAAMM.zip contenant tout les log du mois MM et année AA.
Je ne vois pas comment faire un tri par mois+année des logs puis les placée par exemple dans un repertoire temporaire qui sera zipper par la suite puis supprimé.

Pour la partie zip j'utilise 7Zip avec ce bout de code :

option Explicit

dim oshell, strDate
strDate = Date
strDate = Replace(strDate,"/","-")

set oshell=createobject("wscript.shell")
oshell.run "cmd /C C:\7-Zip\7z.exe a -tzip C:\LOG\Archives"& strDate &".zip C:\LOG\*.log -r"

Je sais pas si il est possible d'utiliser simplement la fonction de compression native a windows. (clic droit, envoyer vers, dossier compressé...)

Si vous avez des idées ou une piste merci de m'en faire part.

Celien

8 réponses

zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
5 mai 2008 à 17:03
Je ne connais pas 7Zip mais peut-etre que ceci pourrait fonctionner :

set oshell=createobject("wscript.shell")
oshell.run "cmd /C C:\7-Zip\7z.exe a -tzip C:\LOG\Archives"& strDate &".zip C:\LOG\Log" & format(now, aamm) & "*.log -r"

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008
5 mai 2008 à 17:33
Salut Zen69,

Bonne idée !


j'ai rectifié en déclarant la variable format et le code en :

format(now, "yyyymm")

mais j'ai une erreur "type incompatible...

Celien
0
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
5 mai 2008 à 17:50
A quel niveau ton erreur ... vb ou 7z.exe ?

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008
5 mai 2008 à 18:33
c'est une erreur vb.

Celien
0

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

Posez votre question
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
5 mai 2008 à 19:52
Je ne vois pas d'ou peut venir cette erreur.

Peux-tu essayer ca :

set oshell= createobject("wscript.shell")
oshell.run "cmd /C C:\7-Zip\7z.exe a -tzip C:\LOG\Archives"& strDate &".zip C:\LOG\Log 200801 *.log -r"

Et me dire si tu as toujours l'erreur .... ?

<hr size ="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008
6 mai 2008 à 10:41
Nan ca passe, tous les logs de ce mois sont zippé

Celien
0
celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008
6 mai 2008 à 11:18
Quelqu'un connait-il sinon un moyen de zipper fichier par fichier sans changer le nom... ca serait plus simple ^^

Celien
0
celien_78 Messages postés 6 Date d'inscription vendredi 10 novembre 2006 Statut Membre Dernière intervention 6 mai 2008
6 mai 2008 à 20:28
ok j'ai avancé et fini quasiment!
j'ai fait simple, je compare les dates si les log sont pas de ce mois alors ils sont zippé dans une archive se nommant avec la date de creation ;)

voici mon code :

Dim DateLM
Dim FSO
Dim oshell
Set oshell=createobject("wscript.shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

LogFolder = "C:\test"
AppFolder = "C:\test\7-Zip"
ZipFolder = "C:\test\Archives"

set Repertoire = FSO.GetFolder (LogFolder)
set ListeFichiers = Repertoire.files
    For each fichier in ListeFichiers
        DateLM = fichier.DateLastModified
        FicDate = (Mid(DateLM,7,4))&(Mid(DateLM,4,2))
        CurDate = (Mid(Date,7,4)) & (Mid(Date,4,2))
          
            IF FicDate <> CurDate Then
                'Zip du fichier
                oshell.run "cmd /C " & AppFolder & "\7z.exe a -tzip " & ZipFolder & "" & FicDate & ".zip " & LogFolder & "" & fichier.name & " -r",0,true
            End If
        'Fin du script pour fichier en cours
    Next
   

reste plus qu'a supprimer les logs ;)

Celien
0
Rejoignez-nous