Batch Supprimer un fichier vieux de X heures
Fermé
Sulyvan77
Messages postés
3
Date d'inscription
vendredi 22 juin 2018
Statut
Membre
Dernière intervention
22 juin 2018
-
Modifié le 22 juin 2018 à 09:51
brucine Messages postés 18326 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 21 décembre 2024 - 27 oct. 2023 à 16:53
brucine Messages postés 18326 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 21 décembre 2024 - 27 oct. 2023 à 16:53
A voir également:
- Script suppression fichier par date
- Forcer suppression fichier - Guide
- Fichier rar - Guide
- Script vidéo youtube - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
4 réponses
jee pee
Messages postés
40574
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
20 décembre 2024
9 460
22 juin 2018 à 10:58
22 juin 2018 à 10:58
Bonjour,
Dans ta commande il manque un espace entre
Par contre cette commande traite les jours, pas les heures. Il faudrait que tu cherches un autre script.
cdlt
Dans ta commande il manque un espace entre
-3 -c
Par contre cette commande traite les jours, pas les heures. Il faudrait que tu cherches un autre script.
cdlt
Sulyvan77
Messages postés
3
Date d'inscription
vendredi 22 juin 2018
Statut
Membre
Dernière intervention
22 juin 2018
22 juin 2018 à 14:19
22 juin 2018 à 14:19
Bonjour et merci de ta réponse,
Après recherche j'ai reussi a faire un script fonctionel pour les jours mais pour les heures je susi toujours en recherche avec pas mal de galère, voici mon test :
Après recherche j'ai reussi a faire un script fonctionel pour les jours mais pour les heures je susi toujours en recherche avec pas mal de galère, voici mon test :
@ECHO OFF
REM DEBUT DU SCRIPT
REM AFFICHAGE HEURE ETS MINUTES
for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
echo Heure : %heure%
echo Minute : %minute%
REM ///////CREATION DOSSIER CONTENANT HEURES ET MINUTES
REM ///////echo Test > fichier_%heure%%minute%.txt
pause
REM VARIABLES TEMPS ET DOSSIERS
REM REPERTOIRE CONTENANT NOS FICHIERS
SET REPDOSS=C:\Users\paje01\Desktop\TEST\test1
REM NOMBRE DE JOUR DE CONSERVATION MAXIMUM
SET HMAX=%time~0,2%
pause
REM SUPPRIME LES FICHIERS
forfiles /P %REPDOSS% /m *.* /D -%HMAX% /C "cmd /c del /q @path"
pause
REM ///// TEST
REM /////ForFiles /P "%REPDOSS%" /D -%JOURMAXS% /C "CMD /C if @ISDIR==TRUE echo RD /Q /S @FILE &RD /Q /S @path"
REM AFFICHER UN MESSAGE APRES LA SUPRESSION
echo Msgbox "Le script a bien ete execute et vos fichiers sont supprimes."
pause
Sulyvan77
Messages postés
3
Date d'inscription
vendredi 22 juin 2018
Statut
Membre
Dernière intervention
22 juin 2018
22 juin 2018 à 14:20
22 juin 2018 à 14:20
Et voici celui qui fonctionne,
@ECHO OFF REM DEBUT DU SCRIPT
REM VARIABLES TEMPS ET DOSSIERS
REM REPERTOIRE CONTENANT NOS FICHIERS
SET REPDOSS=C:\Users\paje01\Desktop\TEST\test1
REM NOMBRE DE JOUR DE CONSERVATION MAXIMUM
SET JOURMAX=1
REM SUPPRIME LES FICHIERS
forfiles /P %REPDOSS% /m *.* /D -%JOURMAX% /C "cmd /c del /q @path"
pause
REM SUPPRIMER LES DOSSIERS
REM ForFiles /P "%REPDOSS%" /D -%JOURMAXS% /C "CMD /C if @ISDIR==TRUE echo RD /Q /S @FILE &RD /Q /S @path"
PAUSE
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 23 juin 2018 à 11:48
Modifié le 23 juin 2018 à 11:48
Bonjour,
J'ai repris ton code pour éliminer les fichiers/dossiers plus vieux que 1 jour, ensuite j'ai crée le code pour supprimer ceux plus vieux que 3 heures :
J'ai repris ton code pour éliminer les fichiers/dossiers plus vieux que 1 jour, ensuite j'ai crée le code pour supprimer ceux plus vieux que 3 heures :
@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul
REM REPERTOIRE CONTENANT NOS FICHIERS
SET REPDOSS=C:\Users\paje01\Desktop\TEST\test1
REM NOMBRE DE JOUR DE CONSERVATION MAXIMUM
SET JOURMAX=1
cd /d %REPDOSS% || exit /b 1
REM SUPPRIME LES FICHIERS
forfiles /D -%JOURMAX% /C "cmd /c if @ISDIR==FALSE (del /f /q @file)"
REM SUPPRIMER LES DOSSIERS
forfiles /D -%JOURMAX% /C "cmd /c if @ISDIR==TRUE (rd /Q /S @file)"
PAUSE
:: RECUPERER L'HEURE ACTUELLE ET LA TRANSFORMER EN MINUTES
for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do (
set H_actuelle=%%a
set M_actuelle=%%b
if !H_actuelle! LSS 10 (set H_actuelle=!H_actuelle:~-1!)
if !M_actuelle! LSS 10 (set M_actuelle=!M_actuelle:~-1!)
set /a total_actuelle=!H_actuelle!*60+!M_actuelle!
)
pause
:: LISTER LES FICHIERS ET DOSSIERS
for /f "delims=" %%K in ('dir /b') do (
:: RECUPERER L'HEURE POUR CHAQUE FICHIER/DOSSIER
for /f "skip=5 tokens=1,2,3,* delims=: " %%A in ('2^>nul dir "%%~K" ^| findstr /v "octets"') do (
set heure=%%B
set minute=%%C
:: TRANSFORMER L'HEURE EN MINUTES
if !heure! LSS 10 (set heure=!heure:~-1!)
if !minute! LSS 10 (set minute=!minute:~-1!)
set /a total_fichier=!heure!*60+!minute!
:: DETERMINER L'ECART ET SUPPRIMER LES FICHIERS/DOSSIERS TROP VIEUX
set /a ecart=!total_actuelle!-!total_fichier!
if !ecart! GTR 180 (2>nul rd /s /q "%%~K" || del /f "%%~K")
if !ecart! LSS -1440 (2>nul rd /s /q "%%~K" || del /f "%%~K")
if !ecart! LSS 0 (if !ecart! GTR -1260 (2>nul rd /s /q "%%~K" || del /f "%%~K"))
)
)
pause
exit /b 0
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
>
barbabe0057
Modifié le 24 oct. 2018 à 20:11
Modifié le 24 oct. 2018 à 20:11
Bonjour,
Si vous voulez de l'aide il faut décrire précisément votre problème, il ne suffit pas de dire ça ne marche pas.
Quelle partie du script ne fonctionne pas ? La 1ère partie qui efface les dossiers/fichiers plus vieux que 1 jour ou bien la deuxième partie qui efface les fichiers/dossiers vieux de plus de 3 heures ?
Est-ce que votre problème concerne les fichiers ou bien les dossiers ou bien les 2 ?
Si vous voulez de l'aide il faut décrire précisément votre problème, il ne suffit pas de dire ça ne marche pas.
Quelle partie du script ne fonctionne pas ? La 1ère partie qui efface les dossiers/fichiers plus vieux que 1 jour ou bien la deuxième partie qui efface les fichiers/dossiers vieux de plus de 3 heures ?
Est-ce que votre problème concerne les fichiers ou bien les dossiers ou bien les 2 ?
Ludo777
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
27 oct. 2023 à 16:13
27 oct. 2023 à 16:13
Bonjour,
Chez moi cela m'efface tous les fichiers et m'indique dans l'invite de commande "opérateur manquant"
Avez vous une idée ?
Sinon la commande forfiles pour 1 jour cela marche nikel, quel dommage que l'on ne puisse pas faire moins d'un jour.
brucine
Messages postés
18326
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
21 décembre 2024
2 713
>
Ludo777
27 oct. 2023 à 16:53
27 oct. 2023 à 16:53
Bonjour,
C'est sûrement que tu as mal recopié la formule de barnane0057 à qui je fais toute confiance à cet égard.
Noter que le Batch Dos gère très mal tout ce qui est dates, il existe une foule de contournements, le plus simple sans utilitaire tiers via PowerShell:
https://stackoverflow.com/questions/74026069/how-to-delete-all-files-last-modified-more-than-5-minutes-ago