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. |
Partager