Récupérer les fichiers modifiés récemment
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je viens de trouver une message de 2018 auquel Barnabe a donné une jolie solution.
Je trouve cette commande très pratique (récupérer les fichiers correspondant à dir /b /s
en conservant les dates.
for /f "delims=" %A in ('dir /b /s') do (echo %~ftA) (Merci Barnabe!)
Est-il possible d'aller plus loin et de ne récupérer que les fichiers qui ont été modifiées (ou créés) dans les dernières 24 heures (par exemple... ou les 7 derniers jours)
Merci à tous ceux qui chercheront à répondre à ma demande.
Windows / Edge 107.0.1418.52
- Récupérer les fichiers modifiés récemment
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Fichiers récents - Guide
- Récupérer mon compte facebook désactivé - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
3 réponses
Bonjour,
La solution la plus simple dans un batch est rendue via ROBOCOPY en jouant sur le paramètre maxage (7 pour une semaine):
set "folder=MonDossier"
for /f "tokens=1,2,*" %%a in ('robocopy "%folder%" "%folder%" *.* /L /s /maxage:7 /nocopy /is /njh /njs /ndl /nc /ns /ts ^|sort ') do echo %%c
pause
Bonjour Murielle et brucine,
Moi je pencherais pour l'utilisation de la commande FORFILES :
FORFILES /S /C "cmd /c if @isdir==FALSE echo @path @fdate @ftime" /D +14/11/2022
-
Par contre je dois être idiot je ne comprends pas pourquoi la commande ne se comporte pas comme prévue lorsque j'utilise un nombre de jours au lieu d'une date fixe :
FORFILES /S /C "cmd /c if @isdir==FALSE echo @path @fdate @ftime" /D -7
Elle me sort tous les fichiers alors qu'ils sont plus anciens que 7 jours.
Est-ce que tu as le même problème chez toi brucine ?
Bonjour,
Oui, c'est le "bénéfice" de l'âge, j'en suis resté à Windows 2000 ou à peu près là où FORFILES n'est documenté qu'à partir de Windows 2008 R2.
La première syntaxe donne le résultat attendu mais a l'inconvénient de devoir spécifier la date sauf si elle peut faire l'objet d'une variable, ce que je ne crois pas.
La deuxième a un comportement "normal" puisque /D -n retourne tous les fichiers antérieurs à date du jour - n et non pas ceux depuis date du jour -n; si on veut utiliser FORFILES dans ce cadre, je n'ai pas testé, il faudrait probablement faire la différence:
exécuter FORFILES sans paramètre de date puis avec /D -n en sortant vers des fichiers temporaires puis retourner cette différence via une commande FINDSTR.
Cette solution est parfaite.
Merci beaucoup Barnabe.
Comme toi, le commutateur fonctionne avec un nombre de jour négatif (a été modifié depuis plus de 3 jours) mais pas avec un nombre positif (a été modifié dans les 3 derniers jours)
Par contre, comme je travaille dans une arborescences très grande qui contient
c:\users\nom\dossier1\dossier2\...\dossier3\enfinlefichier
J'aimerais dans @Path supprimer tout le début c:\users\nom\dossier1\dossier2\...\
Comment faire pour que la chaine de caractère retournée avec @Path soit réduite des 40 premiers caractères?
Bonsoir Barnave,
Et non, je voudrais conserver uniquement la fin du chemin car le chemin est tres long.
Mais si c'est trop compliqué, j'editerai le fichier texte en sortie et ferai un rechercher-remplacer!
Ok dans ce cas pour supprimer les 40 premiers caractères il faut procéder ainsi :
setlocal enabledelayedexpansion cd /d le dossier qui va bien for /f "delims=" %%A in ('FORFILES /S /C "cmd /c if @isdir==FALSE echo @path @fdate @ftime" /D -7') do ( set "fichier=%%A" set "fichier=!fichier:~40!" echo !fichier! )
Si pour une raison ou pour une autre je veux conserver l'horodatage dans le résultat, remplacer bien sûr %%c par %%~ftc qui rend aaaa/mm/jj hh:mn cheminfichier, si je ne veux pas le chemin %%~nxtc.
Supposons maintenant que je veuille le nom du fichier suivi de la date au format français jj-mm-aaaa: