[Résolu]Selectionner des fichiers + 5 jours

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Dominique

[Résolu]Selectionner des fichiers + 5 jours

Message 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 à +
Avatar du membre
flox
Administrateur du site
Messages : 158
Enregistré le : 18 janv. 2008 22:05

Re: Selectionner des fichiers + 5 jours

Message 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
dominique

Re: Selectionner des fichiers + 5 jours

Message par dominique »

merci beaucoup c'est super
Avatar du membre
flox
Administrateur du site
Messages : 158
Enregistré le : 18 janv. 2008 22:05

Re: Selectionner des fichiers + 5 jours

Message 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

@+
Répondre