Recherche par date en utilisant la ligne de commande
Est-il possible de rechercher des fichiers dans un répertoire basé sur la date? Je veux trouver tous les fichiers avec la date de création supérieure à une date spécifique, est-il possible de le faire avec dir
commande?
dir /OD
va trier par date, au moinsdir ne peuvent pas, mais les Unix commande find . Dos de port disponible ici
superuser.com/a/326025/3588 au super-Utilisateur est une solution élégante à l'aide de
xcopy
sans les copierLe xcopy solution s'applique à modifié et pas la date de création.
Le temps de changer la accepté de répondre.
OriginalL'auteur developer | 2012-02-10
Vous devez vous connecter pour publier un commentaire.
dir
par lui-même ne peut pas filtrer par date, mais vous pouvez analyser les données en sortie dedir
à l'aide defor
de commande. Si dans votre pays,dir
imprime la date dans le format YMD, alors vous avez seulement besoin de les comparer avec la date donnée. Si l'ordre du jour des pièces est différente, alors vous devez utiliser un autrefor
de commande pour analyser la date et de le modifier pour YMD. Cela permet d'afficher une liste des fichiers modifiés après le 5 Février.if
ne la norme de comparaison de chaîne, donc à la fin vous pouvez obtenir de ligne si la ligne de résumé de passe à la comparaison. Pour éviter cela, vous pouvez utiliserif %%A GTR 2012-02-05 if exist %%B echo %%A %%B
EDIT:
Il en est de même meilleure approche qui évite d'analyser de
dir
de sortie et permet également la recherche par le temps, non seulement par la date:Pour utiliser minutes en comparaison, faire les modifications suivantes:
tokens=1,2,4
et puisif "%%A %%B" GTR "2012-02-05 11:23" echo %%A %%B %%C
Pour en savoir plus, vous pouvez commencer avec en.wikipedia.org/wiki/Batch_file et puis continuer avec les trois premiers liens externes.OriginalL'auteur MBu
Viens de découvrir la
forfiles
commande.Liste de tous les fichiers journaux modifiée de plus de sept jours, dans tous les sous-répertoires, mais il ne semble pas regarder la date de création. Il prend en charge la spécification d'une date spécifique.
Voir
forfiles /?
pour plus d'info.+
au lieu de-
pour la/d
paramètre, donc quelque chose comme+02/05/2012
au lieu de-7
. Aussi pour montrer la date et l'heure de sortie pour chaque fichier, vous pouvez utilisercmd /c echo @fdate @ftime @path
+1 Cela devrait être accepté de répondre à
Mise en garde: Malheur à vous qui souhaitez utiliser des chemins d'accès UNC avec cette. Ou dans de nombreux autres endroits dans Windows...
FORFILES /D
fonctionne uniquement avec modification des dates. Pour résoudre UNC problèmes d'utilisationMKLINK /D
.Pour ceux qui attendent
/d +7
pour vous montrer les fichiers modifiés moins de sept jours, non. Il vous montre les fichiers modifiés sept jours à partir de maintenant. Vous devez utiliser une date, comme+02/05/2012
.OriginalL'auteur Dave
Bien, vous ne pouvez pas pour autant que je sais, mais ce genre de penser au travail, mais encore vraiment inutile à moins que vous avez une date courte portée 😉
dir /tc
de travailler avec des dates de création.OriginalL'auteur Justin
un moyen plus facile pour moi, c'est quelque chose comme
OriginalL'auteur skelly
C'est facile à faire avec PowerShell. Je sais que votre question était de savoir cmd, mais le PS est inclus dans windows 7 et les versions ultérieures. Il peut également être installé sur XP et Vista.
Utiliser le
Get-ChildItem
de commande (aliasdir
) pour obtenir tous les fichiers. Rediriger la sortie vers l'Where-Object
de commande (alias?
) pour renvoyer les fichiers dont la date est supérieure (-gt
) une date précise.Pour Powershell 2.0 (par défaut sur Windows 7), vous devez utiliser un scriptblock:
Pour Powershell 3.0 (par défaut sur Windows 8) et vous pouvez utiliser cette syntaxe plus simple à la place:
La
dir -file
commande retourne une collection deSystem.IO.FileInfo
objets. Ce fichier objet a beaucoup de propriétés que vous pouvez utiliser pour le filtrage complexe (la taille du fichier, date de création, etc.). Voir MSDN pour la documentation.La syntaxe j'ai utilisé des œuvres pour le PS 3.0 et jusqu'je crois. Si vous avez PS 1.0 ou 2.0, vous devez utiliser un scriptblock comme suit:
| ? {$_.LastWriteTimeUtc -gt ([datetime]"2013-05-01")}
Ah je suis sur Windows 7 avec la PS 2. Merci
dir -fichier jette "Un paramètre ne peut pas être trouvé" sur 2.0
Quelqu'un peut-il expliquer pourquoi cette commande recherche tous les fichiers modifiés sur la date, mais néglige le temps? dir -s -fichier | ? LastWriteTimeUtc -gt ([datetime]"2015-03-07 16:00:00") C'est, il trouve tous les fichiers modifiés après 2015-03-07 00:00:00, ce qui n'est PAS ce que je veux. Je veux que tous les fichiers modifiés après 4 heures. Merci à l'avance.
OriginalL'auteur bouvierr