Suppression de fichiers en fonction d'une date. - Shell/Batch - Programmation
Marsh Posté le 13-03-2006 à 12:49:34
Salut Alandon 
 
Je n'ai pas bien saisi ton problème. ce que tu souhaite c'est de récupérer la date du système il y a n jours ?  
 
bon première étape tu récupère la date système :  
 
rem recupere le premier mot avec separateur / et l'envoi dans la variable %jour% 
for /f "tokens=1 delims=/ " %%a in ('date/t') do set jour=%%a 
rem recupere le second mot avec separateur / et l'envoi dans la variable %mois% 
for /f "tokens=2 delims=/ " %%b in ('date/t') do set mois=%%b 
rem recupere le troisieme mot avec separateur / et l'envoi dans la variable %an% 
for /f "tokens=3 delims=/ " %%b in ('date/t') do set an=%%b 
 
Attention avec les tokens sur certains systèmes ce n'est pas les mêmes ! teste avant :) 
 
après tu définis à combien de jour tu veux revenir dans le temps 
 
set /A jourj=%jour% - X  
rem ou X désigne le nombre de jour à enlever 
set /A mois=%mois% + 0 
set /A an=%an% 
 
Après ça se complique un peu tu teste le résultat de la valeur jourj 
 
:encour 
if /I %jourj% LEQ 0 goto MOIS 
if /I %mois% GTR 0 goto jour 
 
une fois que tu as testé la valeur de jourj tu détermine la valeur de mois en le testant et de proche en proche tu détermine l'année. 
 
:MOIS 
set /A mois=%mois% - 1 
if %mois% EQU 0 set /A an=%an%-1 
if %mois% EQU 0 set /A mois=12 
goto reglej 
 
:jour 
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 
goto ERROR 
 
:SET31 
if %jourj% LEQ 0 set /A jourj=31+%jourj% 
if %jourj% LEQ 0 goto MOIS 
goto DONE 
 
:SET30 
if %jourj% LEQ 0 set /A jourj=30+%jourj% 
if %jourj% LEQ 0 goto MOIS 
goto DONE 
 
:BIS 
set /A tt=%an% %% 4 
if not %tt%==0 goto SET28 
set /A tt=%an% %% 100 
if not %tt%==0 goto SET29 
set /A tt=%an% %% 400 
if %tt%==0 goto SET29 
 
:SET28 
if %jourj% LEQ 0 set /A jourj=28+%jourj% 
if %jourj% LEQ 0 goto MOIS 
goto DONE 
 
:SET29 
if %jourj% LEQ 0set /A jourj=29+%jourj% 
if %jourj% LEQ 0 goto MOIS 
goto DONE 
 
:DONE 
 
if /i %jourj% LSS 10 set jourj=0%jourj% 
if /i %mois% LSS 10 set mois=0%mois% 
 
 
echo %an%%mois%%jourj% 
 
set ladate=%an%%mois%%jourj% 
 
parce que je suis sympa fait attention a deux exception les valeurs octales 08 et 09. 
 
le jour ou tu tombe sur une valeur de jourj ou mois égale à 08 ou 09 lorsque tu va vouloir les retranchée ca fera une erreur. 
 
pour cela il faut faire un test avant : 
 
IF %jour% EQU 08 SET jour=8 
IF %jour% EQU 09 SET jour=9 
IF %mois% EQU 08 SET mois=8 
IF %mois% EQU 09 SET mois=9 
 
j'espère que cela t'a aidé a récupérer la date. pour supprimer les dossier je pense que tu sais le faire  
 
A+
Marsh Posté le 13-03-2006 à 17:10:28
Merci beaucoup d'avoir répondu zarnagos, j'ai à peu près compris toutes tes lignes de programmes, mais de toute façon n'ayant pas eu de réponses plus tôt j'ai posté ici et on m'a répondu et ça me convient parfaitement: 
http://forum.hardware.fr/hardwaref [...] m#t2350426 
 
Je vais tester ce que tu as écris, en plus tu as bien détaillé. 
  
 
Marsh Posté le 25-01-2010 à 13:07:45
Désolé de déterrer ce vieux topic, mais j'ai eu besoin de faire la même chose, et j'ai trouvé un moyen bien plus simple ici : 
 
http://www.infos-du-net.com/forum/ [...] iers-jours 
 
En gros, on utilise l'utilitaire forfile en ligne de commande, et le tour est joué.
Marsh Posté le 07-03-2006 à 20:38:40
Bonjour,
Je souhaiterais supprimer le contenu d'un répertoire vieux de X jours par rapport à la date du système.
je voudrais faire tout ça en batch ou a la rigueur en vbscript mais je ne sais pas comment faire, en cherchant sur google et ici, j'ai chopé ça:
Si quelqu'un pouvait m'aider à faire cette "routine",