Bonjour,
J'aimerai savoir si il y a un moyen se supprimer tout les fichiers vieux de 10 jours situés dans plusieurs sous dossiers et dossiers.
Merci
Bonjour,
J'aimerai savoir si il y a un moyen se supprimer tout les fichiers vieux de 10 jours situés dans plusieurs sous dossiers et dossiers.
Merci
Tu peux essayer quelque chose dans ce genre
Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @echo off setlocal enabledelayedexpansion set "Year=%DATE:~6,4%" set "Month=%DATE:~3,2%" set "Day=%DATE:~0,2%" set /a "TimeStamp=(((Year * 365) + ((Month - 1) * 30)) + Day) - 10" for /r "%cd%\test" %%a in (*) do ( for /f "tokens=1" %%b in ("%%~ta") do ( for /f "tokens=1-3 delims=/" %%c in ("%%b") do ( set /a "FileTimeStamp=(((%%e * 365) + ((%%d - 1) * 30)) + %%c)" if !FileTimeStamp! LSS %TimeStamp% del /q "%%~dpnxa" ) ) ) pause
Le gourou dicte la ligne (de commande) à suivre ...
Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
ainsi que le Cour sur la ligne de commande et des scripts
merci beaucoup,si je desire augmenter le nombre de jour(vieux de 30 jours ) quel parametres faut il changer?
Dans la ligne qui créé le timestamp de référence, "10" est le nombre a changé
Le code se déroule ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part set /a "TimeStamp=(((Year * 365) + ((Month - 1) * 30)) + Day) - 10"
Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
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 @echo off setlocal enabledelayedexpansion set "Year=%DATE:~6,4%" set "Month=%DATE:~3,2%" set "Day=%DATE:~0,2%" :: Création d'un timestamp de référence (la date courante moins le nombre de jour voulue). set /a "TimeStamp=(((Year * 365) + ((Month - 1) * 30)) + Day) - 10" :: Le répertoire "%cd%\test" est parcouru à la recherche de tous les fichiers :: La date de création du fichier est récupèré :: La date de création du fichier est parsé :: Un timestamp de la date de création du fichier est créé :: Si le timestamp de la date de création du fichier est inférieur au timestamp de référence, le fichier est supprimé. for /r "%cd%\test" %%a in (*) do ( for /f "tokens=1" %%b in ("%%~ta") do ( for /f "tokens=1-3 delims=/" %%c in ("%%b") do ( set /a "FileTimeStamp=(((%%e * 365) + ((%%d - 1) * 30)) + %%c)" if !FileTimeStamp! LSS %TimeStamp% del /q "%%~dpnxa" ) ) ) pause
Le gourou dicte la ligne (de commande) à suivre ...
Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
ainsi que le Cour sur la ligne de commande et des scripts
Petite question j'ai un fichier qui a 39 jours(créé a 10h15 ), j'ai fait qu'en sorte il soit supprimer à 39 jours ( pour test,test effectue à 12h) et impossible,il se supprime si je le mets à 38jours .est ce qu'il y aurait une subtilité?
est ce que l'execution peut se faire sans que l'on click dessus,j'aimerai qui s'execute via le planificateur de tache.le planificateur le lance bien ,mais il ne purge pas les fichiers.
Salut,
perso j'utiliserais FORFILES :
Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @echo off forfiles /p "C:\ton\chemin" /S /D -39 /C "cmd /c del @path"
à adapter à ta situation...
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
bonjour,
est ce que ta ligne de code nettoye dans les dossiers et sous dossiers car cela m'interesse également
merci sachadee ,
ca marche nickel. une petie question subsidiaire , si je veux conserver les extension .txt et .doc?
Tu peux utiliser un masque pour les extensions que tu veux traiter (par defaut [*.*])
ici pour detruire les fichiers [.doc] :
Donc, lorsque tu connais les extensions à éliminer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 forfiles /p "C:\ton\chemin" /S /m *.doc /D -39 /C "cmd /c del @path"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @echo off for %%G in (.zip, .doc, .xls) do forfiles /p "C:\ton\chemin" /s /m *%%G -d -39 /c "cmd /c del @path"
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
en fait je ne desire pas detruire par exemple les .xls et .doc
Il serait préferable de savoir ce que tu veux détruire, sinon on peu d'abord tester les extensions existantes et creer une liste des extensions à détruire
en filtrant les extensions à garder.
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
en fait je veux detruire tout les fichiers sauf ces 2 extensions (.xls et .doc )
merci encore pour ton aide
Ok si tu veux vraiment le faire de cette manière ça va prendre un peu plus de temps.
Défini les extension à garder dans la variable [$StayingExt] et l'age des fichiers dans [$Jour]
et le chemin de base dans [$Chemin]
Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
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 ::SachaDee - 2015 echo off&cls ::Le chemin de base set "$Chemin=c:\ton\chemin" ::Les extensions à garder set "$StayingExt=.au3,.txt" ::L'age des fichiers à détruire set "$jour=39" echo Traitement en cours..... ::On determine les extensions existante for /f "delims=" %%a in ('dir /a-d/s/b "%$chemin%"') do set "##%%~xa=%%~xa" ::On cree une liste de ces extensions en éliminant les extensions à garder setlocal enabledelayedexpansion for /f "tokens=2 delims==" %%a in ('set ##') do ( set $Sw=0 for %%x in (%$StayingExt%) do if /i %%a==%%x set $Sw=1 if !$Sw!==0 set $Liste=!$Liste!,%%a) ::On détruit les fichiers plus vieux que %$Jour%, dont l'extension est présente dans notre liste filtrée for %%G in (!$Liste:~1!) do forfiles /p "%$Chemin%" /s /m *%%G -d -%$Jour% /c "cmd /c del @path" echo Termin pause
________________________________
Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
________________________________
Bonjour,
Juste un petit complément: la commande FORFILES, qui est très intéressante, ne fonctionne pas avec une adresse UNC. Dommage
Je propose autre chose car je l'aurais fait à l'envers.
Plus simple plus rapide, non ?
Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @echo off set exclusion=zip doc xls set Chemin=c:\ton\chemin set jour=39 for /f "tokens=*" %%a in ('FORFILES /P "%Chemin%" /S /D -%jour% /C "cmd /c echo @path"') do echo %%~xa|findstr /vile "%exclusion%">nul&&del "%%~a" pause exit
Oui c'est nul, c'est du batchBonjour,
Juste un petit complément: la commande FORFILES, qui est très intéressante, ne fonctionne pas avec une adresse UNC. Dommage
Tu doit monter un lecteur au préalable avec la commande NET USE et utiliser le lecteur dans FORFILES
https://stackoverflow.com/questions/...-with-unc-path
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager