Suppression de fichiers en fonction d'une date.

Suppression de fichiers en fonction d'une date. - Shell/Batch - Programmation

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:
 
 

Code :
  1. date/
  2. set jour=%%i
  3. set mois=%%j
  4. set annee=%%k
  5. del c:\sauvegarde c:\sauvegarde-%jour%-%mois%-%annee%


 
Si quelqu'un pouvait m'aider à faire cette "routine",  :hello:  :jap:

Reply

Marsh Posté le 07-03-2006 à 20:38:40   

Reply

Marsh Posté le 08-03-2006 à 06:36:06    

up

Reply

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+


Message édité par zarnagos le 01-02-2007 à 10:40:15
Reply

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é.
 
:jap:

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed