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