web-dev-qa-db-fra.com

Rechercher des fichiers sous Windows modifiés après une date donnée à l'aide de la ligne de commande

Je dois rechercher un fichier sur mon disque modifié après une date donnée à l'aide de la ligne de commande.

Par exemple:

   dir /S /B WHERE modified date > 12/07/2013
11
Daniel Peñalba

Vous pouvez utiliser PowerShell pour cela, essayez:

Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "12/27/2016" }

21
Ralf de Kleine

La commande forfiles a fonctionné pour moi sous Windows 7. L'article est ici:

http://www.windows-commandline.com/find-files-based-on-modified- time/

Microsoft Technet doc: http://technet.Microsoft.com/en-us/library/cc753551.aspx

Pour l'exemple ci-dessus:

forfiles /P <dir> /S /D +12/07/2013
  • / P Le chemin de départ de la recherche
  • / S Recurse dans des sous-répertoires
  • / D Date de recherche, le "+" signifie "plus grand que" ou "depuis"
29
John Jesus

J'étais après que la taille des fichiers ait changé et je n'avais pas Powershell, mais j'ai utilisé ce qui suit, mais l'indice provient d'un autre message.

http://www.scotiasystems.com/blog/it-hints-and-tips/quick-way-to-find-recently-changed-files-in-windows et Commande Windows pour taille du fichier seulement?

set Target=E:\userdata
rem Date format is M-D-YYYY
set date=12-13-2013
set Filelist=d:\temp\filelist.txt
set Sizelist=d:\temp\sizelist%date%.csv

echo Target is %Target%
echo Start date is %date%
echo file list is %Filelist%
echo Sizelist is %sizelist%

Xcopy %Target% /D:%date% /L /S  > %Filelist%
echo FileSize (bytes), FileName > %sizelist%

For /f "tokens=1 delims=;" %%j in (%Filelist%) do (
                call :Size "%%j"
                )    
Goto :EOF

:Size
@echo off
echo %~z1, %1 >> %sizelist%
3
richard smallacombe

J'avais le même problème. J'ai donc créé une liste à l'aide de XCOPY et de la date de modification avant que je cherchais, puis utilisé une boucle for pour parcourir la liste et ajouter les informations de date/heure dont j'avais besoin pour chaque fichier dans un journal.

xcopy X:\file_*.log X:\temp /D:07-17-2014 /L /Y > X:\files.txt
for /f "tokens=* delims=" %%a in (X:\files.txt ) do (
    @echo %%~ta %%a >> X:\files.log
)

Résultat: quelque chose comme ce qui suit, qui correspond exactement à ce que je voulais.

X:\>()
07/17/2014 09:41 AM X:\file_201407170600.log

X:\>()
07/17/2014 09:41 AM X:\file_201407170615.log

X:\>()
07/17/2014 09:23 AM X:\file_201407170630.log
2
thehme

Vous pouvez rechercher des fichiers modifiés après une date donnée en utilisant XCOPY comme dans cet exemple, en recherchant des fichiers depuis le dernier jour de 2018:

xcopy *.* c:\temp\*.* /D:12-31-2018 /L /S

Dans cet exemple, vous vous trouvez dans le répertoire où commence votre recherche.

c:\temp *. * n'est qu'une syntaxe requise, rien n'y sera copié.

/ D: 12-31-2018 spécifie la date de modification des fichiers que vous recherchez, y compris la date spécifiée.

/ L affiche les noms de fichiers, y compris le lecteur et le chemin, fait également que xcopy ne copie aucun fichier.

/ S recherche dans les sous-répertoires.

1
David Hernán

Si vous décidez d'utiliser Power Shell, cela fonctionnera également avec les plages de date et heure:

Get-ChildItem -Recurse | Where-Object {($_.LastWriteTime -ge "04/15/2018 20:00:00") -and ($
_.LastWriteTime -lt "04/15/2018 21:00:00")}

Pour utiliser une date programmatique ou une date heure autonome:

Get-ChildItem -Recurse | Where-Object {($_.LastWriteTime -ge (new-object System.DateTime 2018, 1, 10, 12, 30, 00)) -and ($_.LastWriteTime -lt (new-object System.DateTime 2018, 1, 14, 12, 15, 59))}

Lorsque la date et l'heure sont entrées dans l'ordre croissant de spécificité temporelle:

Année, mois, jour, heure, minute, seconde

1
egallardo