Bonjour à tous,

J'ai créé un script qui prends en compte le nombre de jour dans le mois qui sera traité.
Mais il n'est pas toujours précis quant aux jours traités
Auriez-vous une autre méthode ?


Mois à traiter :

Janvier 31
Fevrier 28
Mars 31
Avril 30
Mai 31 ...

Ce que doit faire le script :

Il vérifie que le dossier Rap_Temp existe
Il copie les fichiers des jours du mois à traiter
Il compresse les fichiers copiés
Il supprime le dossier Rap_Temp
Il supprimer les fichiers des jours du mois à traiter dans son dossier d'origine et ne laisse que les fichiers du mois précédent.


Le script executé le 01 Mars: Compresse et sauvegarde sur un aure lecteur les fichier de Janvier et garde les fichiers de Février.

Le script éxécuté le 01 Avril: Compresse et sauvegarde sur un aure lecteur les fichiers de Février et garde les fichiers de Mars.

Merci à tous pour vos réponses

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
'------------------------
'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 "SA"
	Plaque="Paris"
Case "SB"
	Plaque="Paris"
Case "SC"
	Plaque="Province"
Case "SD"
	Plaque="Paris"
Case "SE"
	Plaque="Province"
Case Else
	Wscript.echo "Erreur dans le parametre"
	wscript.quit(2)
End Select
 
'----------------------------------------------------------------
'Définission des chemins utilisés pour chaque Salle pour la ville
'----------------------------------------------------------------
 
 
 
 
MyDate = Day(Now) & "." & Year(Now) & "." & Month(Now) 
 
 
Log="E:\appli\Log\Historique\Rapport_" & centre & "_"& MyDate &".log"
 
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
Set FileLog = FSO.CreateTextFile(Log)
 
'MyDate = Day(Now) & "." & Year(Now) & "." & Month(Now) 
 
 
Source = "E:\appli\Formation_" & plaque & "\Efluid_" & Centre & "\Rapport\"
Destination = "K:\Sauvegarde\Formation_" & plaque & "\Rapport\" & Centre & "\Rapport_sauve_"& Centre &"_"& MyDate &".zip"
Safe = "K:\Sauvegarde\Formation_" & plaque & "\Rapport\"& Centre &"\Rap_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
 
'---------------------------------------------------------------------------------------------------------------------------------------
'Test si le dossier Rapport n'est pas vide pour chaque centre OK = Traitement KO = Arrêt du Traitement pour chaque centre
'---------------------------------------------------------------------------------------------------------------------------------------
 
Sub Verif_Rapport
	msglog "0","0000","---Debut:------- Verification que le Dossier Rapport n'est pas vide vide pour le centre " & centre
	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:------- Traitement annulé le Dossier Rapport est vide pour le centre " & centre
		wscript.quit (8)
		Else
	msglog "0","0000","---Resultat:---- Le Dossier Rapport n'est pas vide pour le centre " & centre
		End If
	End If
	msglog "0","0000","---Fin:--------- Verification que le Dossier Rapport n'est pas vide vide pour le centre " & centre
End Sub
 
'---------------------------------------------------------------------------------------------------------------------------------------
'Test si le dossier Rap_temp est bien absent OK = Création  = Si présent  =  Warning Arrêt du Traitement pour chaque centre
'---------------------------------------------------------------------------------------------------------------------------------------
 
Sub Verif_Rap_temp
	msglog "0","0000","---Debut:------- Verification que le Dossier Rap_temp 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 Rap_temp existe déja pour le centre" & centre
		wscript.quit (8)
		Else
	msglog "0","0000","---Resultat:---- Le Dossier Rap_temp 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 Rap_temp n'existe pas pour le centre " & centre	
End Sub
 
'----------------------------------------------------------------------------------
'Copie des fichiers de + de 30 jours Source dans le dossier Rap_temp
'----------------------------------------------------------------------------------
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 AgeMaximalFichiers = 32
  DateSysteme = Date
 
Sub Copie_des_fichiers()
	msglog "0","0000","---Debut:------- Copie des fichiers dans le Dossier Rap_temp pour le centre " & centre
Set Fold = objfso.Getfolder(Source)
	msglog "0","0000","---Fin:--------- Copie des fichiers dans le Dossier Rap_temp pour le centre " & centre
	For Each Fich In Fold.Files
		If (DateDiff("d", Fich.DateLastModified, DateSysteme ) < AgeMaximalFichiers) Then
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 Rap_temp pour chaque centre
'-----------------------------------------------------------
Sub Supp_Rap_temp
	msglog "0","0000","---Debut:------- Suppression du Dossier Rap_temp pour le centre " & centre
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.DeleteFolder "K:\Sauvegarde\Formation_" & plaque & "\Rapport\"& Centre &"\Rap_temp",True
	msglog "0","0000","---Fin:--------- Suppression du Dossier Rap_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
Else		
		    Fich.Delete ()
		End If
	Next
End Sub
 
'------------------
' Corps su script
'------------------
 
msglog "0","0000","---Debut:------- Sauv_Rapport.vbs "
Verif_Rapport
Verif_Rap_temp
Copie_des_fichiers
Compress
Supp_Rap_temp
Supp_fichiers
msglog "0","0000","---Fin:--------- Sauv_Rapport.vbs"
FileLog.Close