Récupérer les fichiers modifiés récemment
Fermébarnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 26 nov. 2022 à 18:34
- Récupérer les fichiers modifiés récemment
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Impossible de récupérer mon compte gmail - Guide
- Wetransfer gratuit fichiers lourd - Guide
3 réponses
21 nov. 2022 à 09:32
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
Modifié le 21 nov. 2022 à 20:59
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 ?
22 nov. 2022 à 07:18
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?
25 nov. 2022 à 21:55
Si tu veux récupérer uniquement le nom du fichier (avec l'extension), il faut remplacer @path par @file
Si tu veux récupérer le nom du fichier sans l'extension, il faut remplacer @path par @fname
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!
Modifié le 26 nov. 2022 à 18:35
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! )
21 nov. 2022 à 10:25
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: