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 :

Traiter les fichiers de plus de trente jours


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 Traiter les fichiers de plus de trente jours
    Bonjour,

    voici ma problématique:
    je dois faire un script qui sera utilisé le 1mai et qui doit:

    Vérifier que le "dossierA" n'est pas vide
    Copier les fichier.bak de plus de 30 jours du "dossierA" dans un dossier "safe"
    Compresser le dossier "Safe" avec date du jour
    supprimer les fichiers.bak qui ont été compressés dans le "dossierA" en gardant les fichiers du mois suivant

    Exp:

    Le script exécuté le le 1mai, sauvegarde les fichiers.bak du mois de mars (zip dans safe) puis les supprimes
    dans "dossierA" en gardant les fichier.bak du mois de avril

    Le script exécuté le le 1juin, sauvegarde les fichiers.bak du mois de avril (zip dans safe) puis les supprimes
    dans "dossierA" en gardant les fichier.bak du mois de mai

    Mon script

    L'ordre des opération que j'ai défini dans mon script

    Vérification si mon "dossierA" n'est pas vide
    Déplacement de fichiers.bak de plus de 30jours dans le dossier "safe"
    Compression du dossier "safe"

    Je n'arrive pas à adapter mon script pour le traitement des fichiers de plus de 30 jours ?
    pour les sections
    '--------------------------------------------------------------
    'Copie des fichiers de DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
    '----------------------------------------------------------------------
    'Suppression des fichiers .bak -n1 qui ont été zippé dans la dossierA
    '----------------------------------------------------------------------

    Merci d'avance pour votre aide


    Mon script



    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
    127
    128
    Dim Source
    Dim Destination
    Dim Safe
    DIM Log
    Dim objFSO, FileLog, oShell, WshShell, oFS 
     
     
     
    MyDate = Day(Now) & "." & Year(Now) & "." & Month(Now)   
    FILE_SUPP="E:\Program\projets\Traitement\Etude\DossierA\*.bak"
    Source = "E:\Program\projets\Traitement\Etude\DossierA"
    Destination = "S:\Historique\DossierA\DossierA_sauve_"& MyDate &".zip"
    Safe = "E:\Program\projets\Traitement\Etude\DossierA\Safe"
     
    Sub Msglog(severite,code,label)
    	wscript.echo Mydate & "-" & time & " " & severite & " " & code & " " & label
    	FileLog.WriteLine(Mydate & "-" & time & " " & severite & " " & code & " " & label) 
    end sub
     
     
    AgeMaximalFichiers = 30
     
    DateSysteme = Date
     
     
    Sub Msglog(severite,code,label)
    	wscript.echo Mydate & "-" & time & " " & severite & " " & code & " " & label
    	FileLog.WriteLine(Mydate & "-" & time & " " & severite & " " & code & " " & label) 
    end sub
     
     
     
    '--------------------------------------------------------------
    'Test si le dossier DossierA n'est pas vide 
    '--------------------------------------------------------------
     
    Sub Verif_DossierA
     
    	msglog "0","0000","-Debut: Verification que le Repertoire DossierA n'est pas vide 
    	If objFSO.FolderExists(Source) Then
    		Set objFolder = objFSO.GetFolder(Source)
    		If objFolder.Files.Count = 0 And objFolder.SubFolders.Count = 0 Then
    			Msglog "1","0001","WARNING: Le Repertoire DossierA est vide 
    			wscript.quit (8)
    		Else
    			msglog "0","0000","Le Repertoire DossierA n'est pas vide 
    		End If
    	End If
    	msglog "0","0000","-Fin: Verification que le Repertoire DossierA n'est pas vide 
    End Sub
     
     
    '--------------------------------------------------------------
    'Copie des fichiers de DossierA n-1 dans le dossier Safe
    '--------------------------------------------------------------
     
    Sub Safe
     
    Set Folder = fso.Getfolder(Source)
    For Each File In Folder.Files
       If (DateDiff("d", File.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
    		If File.Attributes And 1 Then File.Attributes = File.Attributes - 1
            File.Copy()
    	Else
     
    End If
     
    End Sub
     
     
    '-------------------------------------------------------------------------------------------
    'Compression du dossier safe contenant les fichiers .bak -n1 et déplacement dans Historique
    '-------------------------------------------------------------------------------------------
     
     
    Sub Compress 
    Set WshShell = Wscript.CreateObject("Wscript.Shell") 
    msglog "0","0000","---Debut: Compression du répertoire " & Safe & " 
    ZIP_CMD = "D:\7-Zip\7z.exe"
    WshShell.Run  chr(34) & ZIP_CMD  & chr(34) & " a -tzip -y " & Destination & "  " &  Safe  
    msglog "0","0000","---Fin:   Compression du répertoire " & Safe & " 
    End sub
     
    Sub Tempo
     
    msglog "0","0000","---Debut: Tempo pour traitement"
    wScript.Sleep 2000000
    msglog "0","0000","---Fin:   Tempo pour traitement"
     
     
    end Sub
     
     
    '-------------------------------------------------------------------------------------------
    'Suppression des fichiers .bak -n1 qui ont été zippé dans la dossierA
    '-------------------------------------------------------------------------------------------
     
     
    Sub SupprimeFiles
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    Set Folder = fso.Getfolder(Source)
    For Each File In Folder.Files
       If (DateDiff("d", File.DateCreated, DateSysteme) > AgeMaximalFichiers) Then
          If File.Attributes And 1 Then File.Attributes = File.Attributes - 1
             File.Delete()
          End If   
    Next
     
    end sub
     
    msglog "0","0000","-Fin: Traitement du ZIP " & Source & " et déplacement dans " & Destination & " pour le centre " & centre
     
     
     
    '---------------------------
    ' Corps su script
    '---------------------------
     
    msglog "0","0000","---Debut: Sauv_DossierA.vbs "
    Verif_DossierA
    Safe
    Compress
    Tempo
    SupprimeFiles
    msglog "0","0000","---Fin: Sauv_DossierA.vbs"
    FileLog.Close

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Une première lecture (hâtive) de ton code montre que tu as défini une variable "Safe" chemin de sauvegarde et le même nom est utilisé pour une procédure Sub. Ce qui est inacceptable.
    Tu as également utilisé le nom d'un objet File pour désigner une variable ce qui est à éviter.
    Enfin, la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File.Copy() ' Il manque un argument : la destination
    'Ce qui doit donner
    File.Copy DestDir
    Corrige ces erreurs puis reviens poster si le problème persiste
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  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 Merci pour la réponse l'autodidacte.
    Je vais créer une nouvelle discussion, et essayer d'être plus clair.
    Pour info je débute en VBS

    Cordialement

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

Discussions similaires

  1. Supprimer les fichiers Excel plus vieux que 7 jours
    Par jeje00 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2009, 20h05
  2. Effacer les tuples de plus de 40 jours?
    Par eleana dans le forum SQLite
    Réponses: 5
    Dernier message: 20/05/2009, 10h12
  3. Réponses: 5
    Dernier message: 19/06/2008, 23h03
  4. Réponses: 12
    Dernier message: 14/02/2008, 04h31
  5. TFileStream et les fichiers de plus de 2Go
    Par naikon dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/06/2004, 16h11

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