IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Archivage de fichiers en mois calendaire


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Par défaut Archivage de fichiers en mois calendaire
    Bonjour à tous,

    voici mon soucis:

    Je dois procéder à l'archivage de données en mois calendaire.
    Aujourd'hui mon script ne traite que les fichier de + de 30 jours
    et donc pour les mois qui ont 31 jours cela ne passe pas

    Je ne suis pas expert en VBS, mais il doit bien exister une fonction
    pour traiter les fichiers du mois en cours (30 ou 31 jours)

    Je vous remercie d'avance à tous pour votre aide.

    PAB/31/SAB

    Mon script: SauvBDT.vbs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    '------------------------
    'Declaration variables
    '------------------------
    Dim Centre, Plaque, Source, Destination, Safe, Fold, Fich, Log
    Dim objFSO, FileLog, oShell, WshShell, oFS
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objArgs = Wscript.Arguments
    VERSION="1.00"
    centre = objArgs(0)
    Select Case Centre
    Case "1"
    	Plaque="Paris"
    Case "2"
    	Plaque="Paris"
    Case "3"
    	Plaque="Province"
    Case "3"
    	Plaque="Province"
     
    	Wscript.echo "Erreur dans le parametre"
    	wscript.quit(2)
    End Select
     
    '-------------------------------------------------------
    'Définission des chemins utilisés pour chaque centre
    '-------------------------------------------------------
     
     
    MyDate = Day(Now) & "." & Year(Now) & "." & Month(Now) 
     
     
    Log="E:\Log\Historique\bondetravail_" & centre & "_"& MyDate &".log"
     
    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
    Set FileLog = FSO.CreateTextFile(Log)
     
     
    Source = "E:\projets\Appli\Source\"
     
    Destination = "S:\Sauv\"& Centre &"\Fiche_"& Centre &"_"& MyDate &".zip"
     
    Safe = "S:\Sauv\"& Centre &"\Sauve_Temp"
     
    '------------------------------------------
    'Initialisation des log pour chaque centre
    '-------------------------------------------
     
    Sub Msglog(severite,code,label)
    	wscript.echo Mydate & "-" & time & " " & severite & " " & code & " " & label
    	FileLog.WriteLine(Mydate & "-" & time & " " & severite & " " & code & " " & label) 
    end sub
     
     
     
    '----------------------------------------------------------------------------------
    'Copie des fichiers de + de 30 jours Source dans le dossier Safe
    '----------------------------------------------------------------------------------
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     AgeMaximalFichiers = 30
      DateSysteme = Date
     
    Sub Copie_des_fichiers()
    	msglog "0","0000","---Debut:------- Copie des fichiers dans le Dossier Sauve_Temp pour le centre " & centre
    Set Fold = objfso.Getfolder(Source)
    	msglog "0","0000","---Fin:--------- Copie des fichiers dans le Dossier Sauve_Temp pour le centre " & centre
    	For Each Fich In Fold.Files
    		If (DateDiff("d", Fich.DateLastModified, DateSysteme ) > AgeMaximalFichiers) Then
    		If Fich.Attributes And 1 Then Fich.Attributes = Fich.Attributes - 1
    		Fich.Copy Safe & "\" , True
    		End If
        Next
    End Sub
     
    '---------------------------------------------------------------------------------------------------
    'Compression du dossier safe contenant les fichier.bak de + de 30 jours pour chaque centre
    '---------------------------------------------------------------------------------------------------
     
    Sub Compress 
    Set oShell = Wscript.CreateObject("Wscript.Shell")
    	msglog "0","0000","---Debut:------- Compression du Dossier " & Destination & " pour le centre " & centre
    ZIP_CMD = "D:\7-Zip\7z.exe"
    oShell.Run  chr(34) & ZIP_CMD  & chr(34) & " a -tzip -y " & Destination & "  " &  Safe, 0,True
    	msglog "0","0000","---Fin:--------- Compression du Dossier " & Destination & " pour le centre " & centre
    End sub
     
    '-----------------------------------------------------------
    'Suppression du dossier Safe_Temp pour chaque centre
    '-----------------------------------------------------------
    Sub Supp_Safe_Temp
    	msglog "0","0000","---Debut:------- Suppression du Dossier Sauve_Temp pour le centre " & centre
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    oFSO.DeleteFolder "S:\Sauv\"& Centre &"\Sauve_Temp",True
    	msglog "0","0000","---Fin:--------- Suppression du Dossier Sauve_Temp pour le centre " & centre
    End sub
     
    '---------------------------------------------------------------------------------------------------------
    'Suppression des fichiers de + de 30 jours dans le dossier Source pour chaque centre
    '---------------------------------------------------------------------------------------------------------
     
    Sub Supp_fichiers()
    	msglog "0","0000","---Debut:------- Suppression des fichiers de + de 30 jours dans le dossier Source pour le centre " & centre
    Set Folder = fso.Getfolder(Source)
    	msglog "0","0000","---Fin:--------- Suppression des fichiers de + de 30 jours dans le dossier Source pour le centre " & centre
    	For Each Fich In Fold.Files
    		If (DateDiff("d", Fich.DateLastModified , DateSysteme ) > AgeMaximalFichiers) Then
    		    Fich.Delete ()
    		End If
    	Next
    End Sub
     
    '------------------
    ' Corps su script
    '------------------
     
    msglog "0","0000","---Debut:------- SauvBDT.vbs "
    Copie_des_fichiers
    Compress
    Supp_Safe_Temp
    Supp_fichiers
    msglog "0","0000","---Fin:--------- SauvBDT.vbs"
    FileLog.Close

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Bonjour,

    Heu je ne comprends pas tout à fait ce qui est bloquant.
    Cependant, si ta condition ne fonctionne pas toujours, as-tu essayé de simplement l'inverser ?
    (Ligne 68,69,70 et 108,109,110)

    Si > à 30 jours alors 'fait ceci'
    ... devient ...
    Si < à 30 jour alors 'ne fait rien' sinon 'fait ceci'
    (peut-être remplacer 30 jour max par 31 dans ce cas ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    '------------------------
    'Declaration variables
    '------------------------
    Dim Centre, Plaque, Source, Destination, Safe, Fold, Fich, Log
    Dim objFSO, FileLog, oShell, WshShell, oFS
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objArgs = Wscript.Arguments
    VERSION="1.00"
    centre = objArgs(0)
    Select Case Centre
    Case "1"
    	Plaque="Paris"
    Case "2"
    	Plaque="Paris"
    Case "3"
    	Plaque="Province"
    Case "3"
    	Plaque="Province"
     
    	Wscript.echo "Erreur dans le parametre"
    	wscript.quit(2)
    End Select
     
    '-------------------------------------------------------
    'Définission des chemins utilisés pour chaque centre
    '-------------------------------------------------------
     
     
    MyDate = Day(Now) & "." & Year(Now) & "." & Month(Now) 
     
     
    Log="E:\Log\Historique\bondetravail_" & centre & "_"& MyDate &".log"
     
    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
    Set FileLog = FSO.CreateTextFile(Log)
     
     
    Source = "E:\projets\Appli\Source\"
     
    Destination = "S:\Sauv\"& Centre &"\Fiche_"& Centre &"_"& MyDate &".zip"
     
    Safe = "S:\Sauv\"& Centre &"\Sauve_Temp"
     
    '------------------------------------------
    'Initialisation des log pour chaque centre
    '-------------------------------------------
     
    Sub Msglog(severite,code,label)
    	wscript.echo Mydate & "-" & time & " " & severite & " " & code & " " & label
    	FileLog.WriteLine(Mydate & "-" & time & " " & severite & " " & code & " " & label) 
    end sub
     
     
     
    '----------------------------------------------------------------------------------
    'Copie des fichiers de + de 30 jours Source dans le dossier Safe
    '----------------------------------------------------------------------------------
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     AgeMaximalFichiers = 30
      DateSysteme = Date
     
    Sub Copie_des_fichiers()
    	msglog "0","0000","---Debut:------- Copie des fichiers dans le Dossier Sauve_Temp pour le centre " & centre
    Set Fold = objfso.Getfolder(Source)
    	msglog "0","0000","---Fin:--------- Copie des fichiers dans le Dossier Sauve_Temp pour le centre " & centre
    	For Each Fich In Fold.Files
    		If (DateDiff("d", Fich.DateLastModified, DateSysteme ) < AgeMaximalFichiers) Then
    'Do nothing
    Else
    		If Fich.Attributes And 1 Then Fich.Attributes = Fich.Attributes - 1
    		Fich.Copy Safe & "\" , True
    		End If
        Next
    End Sub
     
    '---------------------------------------------------------------------------------------------------
    'Compression du dossier safe contenant les fichier.bak de + de 30 jours pour chaque centre
    '---------------------------------------------------------------------------------------------------
     
    Sub Compress 
    Set oShell = Wscript.CreateObject("Wscript.Shell")
    	msglog "0","0000","---Debut:------- Compression du Dossier " & Destination & " pour le centre " & centre
    ZIP_CMD = "D:\7-Zip\7z.exe"
    oShell.Run  chr(34) & ZIP_CMD  & chr(34) & " a -tzip -y " & Destination & "  " &  Safe, 0,True
    	msglog "0","0000","---Fin:--------- Compression du Dossier " & Destination & " pour le centre " & centre
    End sub
     
    '-----------------------------------------------------------
    'Suppression du dossier Safe_Temp pour chaque centre
    '-----------------------------------------------------------
    Sub Supp_Safe_Temp
    	msglog "0","0000","---Debut:------- Suppression du Dossier Sauve_Temp pour le centre " & centre
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    oFSO.DeleteFolder "S:\Sauv\"& Centre &"\Sauve_Temp",True
    	msglog "0","0000","---Fin:--------- Suppression du Dossier Sauve_Temp pour le centre " & centre
    End sub
     
    '---------------------------------------------------------------------------------------------------------
    'Suppression des fichiers de + de 30 jours dans le dossier Source pour chaque centre
    '---------------------------------------------------------------------------------------------------------
     
    Sub Supp_fichiers()
    	msglog "0","0000","---Debut:------- Suppression des fichiers de + de 30 jours dans le dossier Source pour le centre " & centre
    Set Folder = fso.Getfolder(Source)
    	msglog "0","0000","---Fin:--------- Suppression des fichiers de + de 30 jours dans le dossier Source pour le centre " & centre
    	For Each Fich In Fold.Files
    		If (DateDiff("d", Fich.DateLastModified , DateSysteme ) < AgeMaximalFichiers) Then
    ' Do nothing
    Else
    		    Fich.Delete ()
    		End If
    	Next
    End Sub
     
    '------------------
    ' Corps su script
    '------------------
     
    msglog "0","0000","---Debut:------- SauvBDT.vbs "
    Copie_des_fichiers
    Compress
    Supp_Safe_Temp
    Supp_fichiers
    msglog "0","0000","---Fin:--------- SauvBDT.vbs"
    FileLog.Close

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Par défaut Archivage de fichiers en mois calendaire
    Merci Cachlab,

    avec 31 ça passe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Grouper des résultats par mois calendaires
    Par fraginfo dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/03/2011, 09h11
  2. archivage des fichiers en delphi 2010
    Par AlfredKr dans le forum EDI
    Réponses: 2
    Dernier message: 16/04/2010, 03h19
  3. Archivage des fichiers de journalisation
    Par yves123-lg dans le forum Administration
    Réponses: 1
    Dernier message: 24/11/2008, 16h15
  4. archivage de fichiers
    Par nana 69 dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/08/2008, 11h19
  5. batch pour suppression de fichiers > 6 mois
    Par salokinn dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 08/02/2008, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo