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 ?
Merci d'avance pour vos orientations
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% )![]()
Partager