Bonjour,
Je vous écris aujourd'hui sur le forum car je suis face à un problème. Je voulais d'abord coder en batch, mais il s'avère que cela n'est pas évident donc je voulais me porter vers le VBS. Je vous explique donc ce que je veux faire :
Le but final est d'archiver les fichiers compris entre la date de lancement du script et 6 mois avant le lancement du script Et de supprimer les fichiers plus vieux que 6mois. Les fichiers sont exprimés en fonction de la date par exemple : ..._ex170630.log (YYMMDD) & de supprimer les autres (donc vieux de plus de 6mois).
Prenons un exemple : Si on lançait le script aujourd'hui 17/07/25
Le fichier : ..._ex170630.log serait conserver tandis que
Le fichier : ..._ex170112.log serait supprimé.
Ma réflexion en batch a été la suivante :
- Mettre dans trois variables : L'année, le jour, le mois (YY/MM/DD) et créer une variable 'Date' de la forme YYMMDD
-Décrementer le mois de respectivement 6.
-Et écraser la variable date avec la nouvelle valeur
-Tester la variable avec les noms des fichiers .log (Si compris entre ajd & 6 mois ->Déplacer vers Archive Puis Archiver
Sinon Supprimer)
J'avoue ne pas savoir par où commencer en VBS car je ne sais pas du tout coder en cette langue.
Après avoir testé ton script (qui est génial au passage) j'aimerais savoir si il était possible d'archiver en plus en vbs et de supprimer directement après avoir affiché le message "A supprimer"?
Dim objFso, colFile, f Set objFso = CreateObject("Scripting.FileSystemObject")
If Not objFso.FolderExists(cstPath & cstPathArchiv) Then objFso.CreateFolder(cstPath & cstPathArchiv) End If
For Each colFile in objFso.GetFolder(cstPath).Files If LCase(objFso.GetExtensionName(colFile)) = cstExtension Then Dim strSplitDate strSplitDate = Right(Split(colFile,".")(UBound(Split(colFile,"."))-1),6) If IsNumeric(strSplitDate) Then CheckFile colFile, strSplitDate End if Next