La commande Windows la plus utilisée et que tout le monde connaît, c'est DIR. Elle accepte plusieurs options qui permettent de filtrer et de trier la liste qu'elle produit: taper DIR /? pour les voir. Mais si on cherche à lister les fichiers d'un répertoire et des ses sous-répertoires qui ont été créés ou modifiés depuis un certain temps, on ne peut pas le faire avec DIR.
C'est pourtant bien utile de savoir quels fichiers d'un projet on a modifié sur son disque dur pendant la journée, ou depuis la veille, ou bien depuis lundi dernier. Pour les sauvegarder sur une clé USB par exemple, ou pour les recopier sur un serveur. On peut regretter qu'il n'existe pas de moyen simple de le faire avec Windows.
La meilleure solution que j'ai trouvée passe par la commande ROBOCOPY. Cette commande Windows est beaucoup moins connue que DIR. Elle est disponible en standard sous Vista, et en option sous XP. Sous XP, on doit installer le "Windows Server 2003 Resource Kit Tools" à télécharger sur http://www.microsoft.com/downloads pour avoir ROBOCOPY.
ROBOCOPY est une version améliorée de XCOPY avec encore plus d'options. L'une d'elles permet d'afficher la liste des fichiers à recopier en fonction des filtres définis sans les copier vraiment: c'est l'option /L . Et comme ROBOCOPY peut filtrer les fichiers d'après leur âge avec l'option /MAXAGE, notre problème est résolu.
D'autres options de ROBOCOPY permettent de formater la liste, et elles sont si nombreuses qu'il vaut mieux écrire la commande dans un fichier BAT pour faciliter son utilisation.
Le fichier de commande batch DIRCHANGES.BAT :
@echo off
set maxage=1
if not "%1" == "" set maxage=%1
robocopy . c:\@ /L /S /TS /FP /NDL /NJH /NJS /NC /NS /XD $RECYCLE.BIN /MAXAGE: |sort
Son utilisation est très simple :
- Aller dans le répertoire à lister et taper DIRCHANGES pour voir les fichiers modifiés dans la journée.
- Pour voir les fichiers modifiés depuis un certain nombre de jours taper DIRCHANGES ce_nombre.
Par exemple: DIRCHANGES 2 pour lister les fichiers modifiés depuis 2 jours.
- Pour voir les fichiers modifiés depuis une certaine date taper DIRCHANGES cette_date.
La date doit être au format AAAAMMJJ (année mois jour).
Par exemple: DIRCHANGES 20090701 pour lister les fichiers modifiés depuis le 1er juillet 2009.
Exemple de liste produite par DIRCHANGES.BAT :
2009/07/08 08:54:25 D:\VolD\dev\www\montpellier-informatique.com\blog\wiki.d\Main.Histo
2009/07/08 09:12:32 D:\VolD\dev\www\montpellier-informatique.com\blog\wiki.d\.flock
2009/07/08 09:12:32 D:\VolD\dev\www\montpellier-informatique.com\blog\wiki.d\.pageindex
2009/07/08 09:12:32 D:\VolD\dev\www\montpellier-informatique.com\blog\wiki.d\Main.BatCode3
2009/07/08 09:12:32 D:\VolD\dev\www\montpellier-informatique.com\blog\wiki.d\Main.RecentChanges
2009/07/08 09:12:32 D:\VolD\dev\www\montpellier-informatique.com\blog\wiki.d\Site.AllRecentChanges
2009/07/08 09:12:34 D:\VolD\UniServer\udrive\usr\local\apache2\logs\access.log
A voir aussi :
J'ai écrit une commande équivalente pour Unix ou Linux :