Bonjour à tous,

Je ne connais absolument rien au Batch ....
Et je dois faire un script qui permet de parcourir un répertoire et les sous-répertoires qu'il comprend pour :
- zipper les fichiers qui datent de plus de 10jours et placer les .zip dans un repertoire d'archive (et effacer le fichier déjà zippé).
- Supprimer les .zip de plus de 30 jours.

J'ai fait un tour sur différents posts du forum
Discussion 1
Discussion 2
la fonction DateToDays indiqueé par minnesota


Et j'ai pu faire le code ci-dessous.
Mes problèmes et questions sont les suivantes :

1°) je fais une boucle FOR pour récupérer un à un les noms des fichiers du répertoire, mais avec les options /R, /F etc je ne suis pas sûr de vraiment boucler sur les noms de fichiers : Pourriez-vous me corriger si j'ai mal structuré mon "FOR"
2°) Comment récupérer la date de dernière modif d'un fichier à partir de ses noms et emplacement ? Ou au pire, sa date de création
3°) Pour faire appel à une fonction définie dans un autre .bat (DateToDays.bat), n'ai-je pas juste à le place dans le même répertoire que mon purge.bat et l'appeler comme dans mon code ?

4°) Y a-t-il des actions à faire pour que zipper puisse se faire avec pkzip étant donné qu'il n'est pas inclus dans DOS ? Autre solution ?

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



:: Scrip qui zippe les fichiers de logs de plus de 10 jours et supprime les zip de plus de 30 jous


echo off

set day_today=%Date:~0,2%
set mth_today=%Date:~4,2%
set year_today=%Date:~7,4%
call :DateToDays %year_today% %mth_today% %day_today% days


REM je fais ici un FOR pour boucler récupérer un à un les noms des fichiers du répertoire, je ne suis pas sûr de vraiment boucler sur les noms de fichiers
FOR /R %%i IN ('dir /B "%rep_log%"' ) do (
set nomfichier = %%i 

::Traitement des fichiers log
set datemodif=date de dernière modif de %nomfichier% REM ici je ne sais pas comment récupérer la date de dernière modif du fichier de log à partir de son nom
set day_modif=%datemodif:~0,2%
set mth_modif=%datemodif:~4,2%
set year_modif=%datemodif:~7,4%
call :DateToDays %year_today% %mth_today% %day_today% days_modif  REM je fais appel à la fonction Datetodays dont le lien était dispo dans un des posts.
set /A anciennete = days-days_modif

if anciennete GTR 10 (
MOVE C:\logs\%nomfichier% E:\archives
pkzip E:\archives\%nomfichier%)

)
::Traitement des fichiers zippé
FOR /R %%i IN ('dir /B "%rep_archive%"' ) do (
set nomfichier = %%i
set datemodif=date de dernière modif de %nomfichier% REM ici je ne sais pas comment récupérer la date de dernière modif du fichier zip
::Traitement_zip

set day_modif=%datemodif:~0,2%
set mth_modif=%datemodif:~4,2%
set year_modif=%datemodif:~7,4%
call :DateToDays %year_today% %mth_today% %day_today% days_modif
set /A anciennete = days-days_modif

if anciennete GTR 30 (
DEL  E:\archives\%nomfichier%

)
Merci d'avance pour vos orientations