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