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 :

PB copy de subfolders


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 PB copy de subfolders
    Bonjour à tous,

    Je dois réaliser un script qui:

    - Copie les sous-dossiers de + de 30 jours(du rep source) dans un dossier (safe)
    - Compresse le dossier (safe) avec 7zip.
    - Il supprime le dossier (safe)
    - Il suprimme les sous-dossiers de plus de 30 jours dans le dossier (source)

    je recontre un soucis au point ci-dessous

    La section :

    '--------------------------------------------------------------------------------------------------
    'Copie des sous-dossiers de + de 30 jours Source dans le dossier Safe_Tempo
    '---------------------------------------------------------------------------------------------------

    - Il ne copie pas les sous-dossiers de + de 30 jours dans le dossier tempo pour compression

    Merci d'avance à tous.


    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
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    '------------------------
    'Declaration variables
    '------------------------
    Dim Centre, Plaque, Source, Destination, Safe, Fold, Fich, Log, Files, f, f1, fc
    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 "Paris"
    	Plaque="Primaire"
    Case "Toulouse"
    	Plaque="Primaire"
    Case "Monaco"
    	Plaque="Primaire"
    Case "Rennes"
    	Plaque="Secondaire"
    Case "Rouen"
    	Plaque="Secondaire"
    Case Else
    	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:\Appli\Log\Historique\Donnees_" & centre & "_"& MyDate &".log"
     
    Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
    Set FileLog = FSO.CreateTextFile(Log)
     
    Source = "E:\Appli\Centre_" & plaque & "\Site_" & Centre & "\Sauvegardes"
    Destination = "K:\Sauvegarde\Centre_" & plaque & "\Arch_Sauvegardes_" & Centre & "_" & MyDate & ".zip"
    Safe = "K:\Sauvegarde\Centre_" & plaque & "\"& Centre &"\Safe_Tempo"
     
    '-----------------------------------------------------
    '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
     
    '---------------------------------------------------------------------------------------------------------------------------------------
    'Test si le dossier Safe_Tempo est bien absent OK = Création  = Si présent  =  Warning Arrêt du Traitement pour chaque centre
    '---------------------------------------------------------------------------------------------------------------------------------------
     
    Sub Verif_Safe_Tempo
    	msglog "0","0000","---Debut:------- Verification que le Dossier Safe_Tempo n'existe pas pour le centre " & centre
    	set objFSOC = CreateObject("Scripting.FileSystemObject")
    If objFSOC.FolderExists (Safe) Then
    	Msglog "1","0001","---WARNING:----- Traitement annulé le Dossier Safe_Tempo existe déja pour le centre" & centre
    		wscript.quit (8)
    		Else
    	msglog "0","0000","---Resultat:---- Le Dossier Safe_Tempo n'existe pas donc il est créé pour le centre " & centre
    	msglog "0","0000","Safe=" & Safe
    Set objFolderC = objFSOC.CreateFolder(Safe)
    End If
    	msglog "0","0000","---Fin:--------- Verification que le Dossier Safe_Tempo n'existe pas pour le centre " & centre	
    End Sub
     
    '--------------------------------------------------------------------------------------------------
    'Copie des sous-dossiers de + de 30 jours Source dans le dossier Safe_Tempo
    '---------------------------------------------------------------------------------------------------
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     AgeMaximalFichiers = 30
      DateSysteme = Date
     
    Sub Copie_des_fichiers()
    	msglog "0","0000","---Debut:------- Copie des fichiers dans le Dossier Safe_Tempo pour le centre " & centre
    Set Fold = objfso.Getfolder(Source)
    	msglog "0","0000","---Fin:--------- Copie des fichiers dans le Dossier Safe_Tempo pour le centre " & centre
    	For Each Fold In Fold.Files
    		If (DateDiff("d", Fold.DateLastModified, DateSysteme ) < AgeMaximalFichiers) Then
    Else
    	If Fold.Attributes And 1 Then Fold.Attributes = Fold.Attributes - 1
    		Fold.Copy Safe & "\" , True
     
    End If
    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.CopyFolder (Source), (Safe)
     
        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_Tempo pour chaque centre
    '------------------------------------------------------------------------
    Const DeleteReadOnly = TRUE
     
    Sub Supp_Safe_Tempo
    	msglog "0","0000","---Debut:------- Suppression du Dossier Safe_Tempo pour le centre " & centre
    Set objFSO = CreateObject ("Scripting.FileSystemObject")
    objFSO.DeleteFolder "K:\Sauvegarde\Centre_" & plaque & "\FluxTP\"& Centre &"\Safe_Tempo", DeleteReadOnly
    	msglog "0","0000","---Fin:--------- Suppression du Dossier Safe_Tempo pour le centre " & centre
    End sub
     
    '-------------------------------------------------------------------------------------------------------------------
    'Suppression des sous dossiers de + de 30 jours dans le dossier Source pour chaque centre
    '-------------------------------------------------------------------------------------------------------------------
     
    Sub DeleteFolder()
     
      DateSysteme = Date
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    set f = fso.GetFolder(Source)
    Set fc = f.subFolders
     
    	For Each f1 in fc
     
    	if (DateDiff("d", F1.DateLastModified , DateSysteme) ) > 30 Then f1.delete
     
    	Next
    End Sub
    '------------------
    ' Corps su script
    '------------------
     
    msglog "0","0000","---Debut:------- Sauv_Donnees.vbs "
    Verif_Safe_Tempo
    Copie_des_fichiers
    Compress
    Supp_Safe_Tempo
    DeleteFolder
    msglog "0","0000","---Fin:--------- Sauv_Donnees.vbs"
    FileLog.Close

  2. #2
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 102
    Par défaut PB copy de subfolders
    En remplaçant ma fonction Sub Copie_des_fichiers()
    par celle ci-dessous, j'arrive maintenant à copier mes sous-dossiers (Source) dans mon dossier de (Destination) pour compression. C'est déja une avancée.

    Seulement je les récupère avec la date d'éxécution du script dans le dossier (Destination)

    Alors que mes sous-dossiers ont des dates différentes dans le dossier (Source)

    L'idée c'est de les copier la date d'origine dans le dossier (destination) pour compression.

    Merci à Tous


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Copy_Folders
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    set f = fso.GetFolder(Source)
    Set fc = f.subFolders
    		For Each f1 in fc
    	If DateDiff("d", f1.DateLastModified, Now) > 30 Then
    	f1.Copy Safe & "\" , True
     
    	End If
    Next
     
    End Sub

Discussions similaires

  1. Protéger une disquette contre la copie
    Par benzaza dans le forum Assembleur
    Réponses: 20
    Dernier message: 16/01/2005, 10h42
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. Copier et afficher une copie d'ecran
    Par Bobx dans le forum Langage
    Réponses: 6
    Dernier message: 02/08/2002, 22h20
  4. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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