Page 1 sur 1
[Résolu]Selectionner des fichiers + 5 jours
Posté : 17 mars 2008 20:10
par Dominique
Bonjour,
Je cherche un moyen de sélectionner des fichiers + de 5 jours de création sous windows avec un fichier batch
Je cherche si quelqu’un peu me donner un coup de pouce.
Bonne journée à +
Re: Selectionner des fichiers + 5 jours
Posté : 17 mars 2008 21:38
par flox
Bonjour,
voici une proposition de script, avec cependant un B-môle, le script ne va pas fonctionner à 100% car les fichiers de plus de 5 jour sont calculé avec la date du jour - 5 jours. Je te laisse imaginez le 1er du mois.
Code : Tout sélectionner
echo off
rem calcul la date du jour - 5 jour
set /a var=%date:~0,2%-5
set newdate= %var%/%date:~3,2%/%date:~6,4%
rem liste les fichier uniquement, présent dans le repertoire c:\dir en enlevant l'entête puis les places dans le fichier c:\list.txt
dir c:\dir /a-d | find "/" > c:\list.txt
rem pour tout ces fichiers
for /f "tokens=1,4 delims= " %%a in (c:\list.txt) do (
rem si la date du fichier est inférieur a la date du jour - 5jours alors le fichier est plus vieux que 5 jours sinon il est plus récent
if %%a LSS %newdate% (echo le fichier %%b est vieux de plus de 5 jours car il a ete cree le %%a) else (echo le fichier %%b a moin de 5 jours car il a ete cree le %%a)
)
pause
Résultat sur un de mes repertoires exécuté le 17/03/2008:
Code : Tout sélectionner
le fichier .rnd est vieux de plus de 5 jours car il a ete cree le 02/03/2008
le fichier 12-2007.txt est vieux de plus de 5 jours car il a ete cree le 04/03/2008
le fichier ab.txt est vieux de plus de 5 jours car il a ete cree le 04/03/2008
le fichier abc.txt est vieux de plus de 5 jours car il a ete cree le 04/03/2008
le fichier BOOTSECT.BAK a moin de 5 jours car il a ete cree le 13/11/2006
le fichier contenu.txt a moin de 5 jours car il a ete cree le 15/03/2008
le fichier dell.sdr est vieux de plus de 5 jours car il a ete cree le 11/01/2008
le fichier fichier_tiers.txt a moin de 5 jours car il a ete cree le 15/03/2008
le fichier ftp.txt est vieux de plus de 5 jours car il a ete cree le 05/02/2008
le fichier journal.txt a moin de 5 jours car il a ete cree le 15/03/2008
le fichier list.csv est vieux de plus de 5 jours car il a ete cree le 10/03/2008
le fichier list.txt a moin de 5 jours car il a ete cree le 17/03/2008
le fichier Nouveau a moin de 5 jours car il a ete cree le 17/03/2008
le fichier script.sql est vieux de plus de 5 jours car il a ete cree le 04/03/2008
le fichier sfdrvup.exe a moin de 5 jours car il a ete cree le 20/11/2007
le fichier sql.sql est vieux de plus de 5 jours car il a ete cree le 04/03/2008
le fichier switch.exe est vieux de plus de 5 jours car il a ete cree le 10/03/2007
le fichier switch.txt est vieux de plus de 5 jours car il a ete cree le 10/03/2007
le fichier test.bat a moin de 5 jours car il a ete cree le 17/03/2008
le fichier vnc.exe est vieux de plus de 5 jours car il a ete cree le 01/07/2006
Voili, Voilou
tu retrouvera le détail des fonctions for et if dans la section
fonctions du site
Re: Selectionner des fichiers + 5 jours
Posté : 19 mars 2008 12:12
par dominique
merci beaucoup c'est super
Re: Selectionner des fichiers + 5 jours
Posté : 02 avr. 2008 15:06
par flox
Re,
Voila un pti "patch", qui va résoudre le problème de date sur les 5 premiers jour du mois ainsi que le souci sur Janvier.
Code : Tout sélectionner
@echo off
rem nombre de jours par mois
set mois1=31
set mois2=29
set mois3=31
set mois4=30
set mois5=31
set mois6=30
set mois7=31
set mois8=31
set mois9=30
set mois10=31
set mois11=30
set mois12=31
rem définition des variables
set /a jour=%date:~0,2%-5
set mois=%date:~3,2%
set annee=%date:~6,4%
set count=0
rem cas problèmatique ou on est les 5 premier jours du mois
if %date:~0,2% LEQ 5 (
:boucle
set /a count2 = mois%count%
set /a count = %count% + 1
rem cas ou on est en janvier
if %date:~3,2% EQU 01 (
set mois=12
set /a jour2=mois12%jour%
set /a annee= %annee%-1
goto end
)
if %date:~3,2% EQU %count% (
rem cas ou on est le 5eme jour du mois
if %jour% EQU 0 (
set jour2=01
goto finboucle
) else (
set /a jour2=%count2%%jour%
set /a mois=%date:~3,2%-1
goto finboucle
)
)
goto boucle
rem sinon c'est qu'on est plus du 5 du mois et la pas de problème
) else (set /a jour2=%date:~0,2%-5)
:finboucle
:end
set newdate= %jour2%/%mois%/%annee%
rem envoi dans le fichier list.txt le nom et la date de création de tous les fichiers contenu dans le répertoire c:\dir
dir c:\dir /a-d | find "/" > list.txt
rem parcours chaque ligne du fichier list.txt
for /f "tokens=1,4 delims= " %%a in (c:\list.txt) do (
rem si la date du fichier est inférieur à la date précédement calulé alors ... sinon ....
if %%a LSS %newdate% (echo le fichier %%b est vieux de plus de 5 jours car il a ete cree le %%a) else (echo le fichier %%b a moin de 5 jours car il a ete cree le %%a)
)
pause
@+