Bonjour, je souhaite faire un script qui puisse purger des dossiers qui on un nom du type aaaa_mm_dd
Je recupere donc la date du jour actuel j'y soustrais 7 jours et suite à cela je compare la date obtenu avec les nom de mes fichiers pour savior s'ils sont à supprimer ou non.

Mon probleme: deja je ne suis pas un connaisseur du batch
donc j'ai réaliser se script en ne sachant pas du tout s'il y avait des methodes plus simple pour faire ce que je recherche. J'ai aussi un gros probleme avec les boucles for.
actuellement mon script recupère uniquement le dernier dossier de mon repertoire et ne traite que celui la.

Accessoirement j'aimerais savoir s'il n'est pas possible d'améliorer se script, des choses inutiles à supprimer ou des manières plus subtiles de faire certaines choses, parce que j'avous que dans certain cas j'ai trouver des solutions mais que je trouve assez inconvenable (pour ne pas dire pourri ou horrible^^)

Voici le code à l'état actuel
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
@echo off
set repTraitement=C:\Documents and Settings\Administrateur\My Documents\matthieu\script\rep_test

rem set test dans l'invite de commande

set jour=%Date:~0,2%
set mois=%Date:~3,-5%
set annee=%Date:~-4%
set nbjour=7  
set compteur=0
set nbjfait=
set jourcourant=%jour%
echo.
echo --------------------
echo ****debut script****
echo --------------------
echo.
rem for / "tokens=1,2,3 delims=_" %i in ('dir /b') do echo %i %j %k
:traitement1 
rem decrementation du nombre de jour verifier + verif si on a atteind le delai d'une semaine
set /A jourcourant=%jourcourant%-1
set /a nbjfait+=1
rem echo nbjfait %nbjfait%
set /A compteur+=1 
rem echo compteur %compteur% 
if %nbjfait% EQU %nbjour% GOTO DONE
rem echo mois %mois%

:traitement2
rem si nombre de jour inferieur a 1 on change de mois et selon le cas d'annee
if %jourcourant% LSS 1 GOTO jour
if %nbjfait% NEQ %nbjour% GOTO traitement1

:jour
rem decrementation du nombre de jours dans le mois passage à 29,28,30 ou 31 
set dizaine_mois=%mois:~0,1%
set unite_mois=%mois:~1,1%
rem echo dizaine %dizaine_mois%
rem echo unite %unite_mois%
if %dizaine_mois% EQU 1 set /A mois=%mois%-1
if %dizaine_mois% EQU 0 set /A mois=%unite_mois%-1
echo mois apres soustraction %mois%
if %mois% EQU 0 set /A annee=%annee%-1
rem echo annee apres soustraction %annee%
if %mois% EQU 0 set /A mois=12
if %mois%==1 goto SET31
if %mois%==2 goto BIS
if %mois%==3 goto SET31
if %mois%==4 goto SET30
if %mois%==5 goto SET31
if %mois%==6 goto SET30
if %mois%==7 goto SET31
if %mois%==8 goto SET31
if %mois%==9 goto SET30
if %mois%==10 goto SET31
if %mois%==11 goto SET30
if %mois%==12 goto SET31



:SET31
rem nombre de jour a 31
set /a jourcourant=31
rem echo jour apres modif %jourcourant%
goto traitement2
 
:SET30
rem nombre de jour a 30
set /a jourcourant=30 
rem echo jour apres modif %jourcourant%
goto traitement2

:BIS
rem passage en anne bissextile
set /A tt=%annee% %% 4
if not %tt%==0 goto SET28
set /A tt=%annee% %% 100
if not %tt%==0 goto SET29
set /A tt=%anne% %% 400
if %tt%==0 goto SET29
 
:SET28
rem nombre de jour a 28
set /A jourcourant=28
rem echo jour apres modif %jourcourant%
goto traitement2
 
:SET29
rem nombre de jour a 29
set /A jourcourant=29
rem echo jour apres modif %jourcourant%
goto traitement2

:DONE
set cmp=0
set cmp_sup=0
echo Nous sommes le %jour%/%mois%/%annee% 
echo La suppression prend en compte tout les dossiers anterieur au %jourcourant%/%mois%/%annee%
echo.
for /f "tokens=1,2,3 delims=_" %%i in ('dir /B "%repTraitement%" ' ) do set /a annee_rep=%%i & set /a cmp+=1 & echo cmp %cmp% & echo annee %%i & echo mois %%j & echo jour %%k & set /a mois_rep=%%j & set /a jour_rep=%%k
rem suppression du caractere espace en fin de variable
set jour_rep=%jour_rep:~0,2%
set  mois_rep=%mois_rep:~0,2%
set  annee_rep=%annee_rep:~0,4%
rem test si annee est depasser ou non 
if %annee_rep% LSS %annee%  rmdir /S /Q "%repTraitement%\%annee_rep%_%mois_rep%_%jour_rep%"& set /a cmp_sup+=1 & echo dossier %annee_rep%_%mois_rep%_%jour_rep% supprimer dans l'annee & GOTO fin
if %mois_rep% LSS %mois% GOTO MOIS_INF
if %jour_rep% LSS %jourcourant% GOTO JOUR_INF rem jour plsu petit ou plus gradn que le jour courant

:MOIS_INF
rem test si annee est depasser ou non 
if %annee_rep% LEQ %annee% rmdir /S /Q "%repTraitement%\%annee_rep%_%mois_rep%_%jour_rep%" & set /a cmp_sup+=1 & echo dossier %annee_rep%_%mois_rep%_%jour_rep% supprimer dans mois_inf
GOTO fin

:JOUR_INF
rem test si le mois du repertoire est anterieur au mois courant
echo passage jour_inf
if %mois_rep% LEQ %mois% GOTO MOIS_INF

:fin
echo.
echo ------------------
echo ****fin script****
echo ------------------
echo.
echo ************************************************
echo %cmp% dossier(s) on(t) ete traite(s), %cmp_sup% supprime(s)
echo ************************************************
echo.

Merci d'avance pour votre aide