Question

Je dois afficher des fichiers entre 2 dates (e-g. Dates 23-SEP-2012 au 30-septembre 2012) dans un dossier à l'aide d'un script de lot.

Il y a environ un demi-million de fichiers dans le dossier.

Comment puis-je faire cela?

Était-ce utile?

La solution

Travailler avec le fichier horodatage est une douleur dans le lot.La solution la plus facile est d'utiliser WMIC.

Voici un script simple qui fera ce que vous voulez.Il peut facilement être modifié pour utiliser la créationDate au lieu de la date de mise en scène.Vous pouvez également ajouter et soustraire des colonnes supplémentaires à la sortie.Tapez wmic datafile get /? pour obtenir une liste de colonnes disponibles (supprimez les espaces des noms).La sortie peut être canalisée pour trier si vous voulez les résultats triés par date.

Les dates doivent être spécifiées dans le format yyyymmdd.

@echo off
:listFilesBetweenDates  Path  StartDate  EndDate
::
::  List files found in directory Path with last modified date between
::  StartDate and EndDate
::
::  path = Directory to list. Use . for current directory
::
::  startDate = YYYYMMDD format
::
::  endDate = YYYYMMDD format
::
setlocal
set "drive=%~d1"
set "folder=%~pnx1\"
set /a "start=%~2, end=%~3+1"
wmic datafile where "drive='%drive%' and path='%folder:\=\\%' and lastModified>='%start%' and lastModified<'%end%'" get lastModified, name


Exemple d'utilisation - Liste des fichiers dans le répertoire en cours entre 07-Sep-2012 et 17-Sep-2012

D:\test>listFilesBetweenDates . 20120907 20120917
LastModified               Name
20120917155412.408435-240  d:\test\idlist.txt
20120910160033.573531-240  d:\test\input.txt
20120907180451.138275-240  d:\test\myurls.txt
20120911115129.949457-240  d:\test\replace.bat
20120917155853.541247-240  d:\test\temp1.txt
20120917162208.635197-240  d:\test\temp2.txt
20120917162217.595287-240  d:\test\temp3.txt
20120911141557.105798-240  d:\test\test,2.txt
20120910160622.664376-240  d:\test\test.vbs
20120907161948.016121-240  d:\test\test3.bat
20120910153717.558353-240  d:\test\test3.txt


Exemple d'utilisation: Liste des fichiers dans le répertoire temporaire entre 26-Sep-2012 et 27-Sep-2012 triés par date de dernière modification à la commande ascendante

D:\test>listFilesBetweenDates "%temp%" 20100926 20120927 | sort

20120926085420.368034-240  d:\users\xxxxxx\temp\~df8a4e7af0245496b2.tmp
20120926085422.630049-240  d:\users\xxxxxx\temp\fxsapidebuglogfile.txt
20120926085433.781136-240  d:\users\xxxxxx\temp\sof8436.tmp
20120926085436.861167-240  d:\users\xxxxxx\temp\cvr941b.tmp.cvr
20120926103842.351663-240  d:\users\xxxxxx\temp\~dfe34cb61c66a1dcd7.tmp
20120926181118.453780-240  d:\users\xxxxxx\temp\~dfd0009f24c8c5eb31.tmp
20120927100903.382946-240  d:\users\xxxxxx\temp\~df559b9f2b2763ac3f.tmp
20120927100915.210126-240  d:\users\xxxxxx\temp\cvr3d51.tmp.cvr
20120927100918.680196-240  d:\users\xxxxxx\temp\sof47cf.tmp
20120927144827.689200-240  d:\users\xxxxxx\temp\tmpdbc8.tmp
20120927144828.169209-240  d:\users\xxxxxx\temp\tmpddad.tmp
20120927184908.066005-240  d:\users\xxxxxx\temp\~df401234aa9008c5e1.tmp
LastModified               Name

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top