Question Trier par créneaux horaires des fichiers

Plus d'informations
il y a 9 mois 1 semaine #31765 par Heslot
Bonjour,

J'ai un répertoire contenant des centaines de fichiers et je vous extraire ceux qui ont créé après 18h00 et avant 8h30 et entre 12h30 et 14h00.

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 mois 1 semaine - il y a 9 mois 1 semaine #31769 par Philippe
salut Heslot

on a pour habitude de ne pas faire le travail des autres mais plutot de leurs apprendre a sens sortir seul !
je vais donc t'expliquer ce dont tu as besoin.

d'abord la liste des fichier : Get-ChildItem suivi du nom du dossier à lister
exemple : Get-ChildItem "c:\windows"
pour avoir tous les fichiers du dossier windows

ensuite il te faut un filtre, ici on peut le faire a partir d'un where
exemple : Get-ChildItem "C:\Windows" | where {$_.Name -like "a*"}
pour avoir tous les fichiers qui commence par "a" du dossier windows

dans ton cas tu a besoin de filtrer sur l'heure, la propriété correspondante est LastWriteTime
exmple d'utilisation : Get-ChildItem "C:\Windows" | where {"{0:HH}:{0:mm}" -f ($_).LastWriteTime -ge "18:00"}
pour avoir tous les fichiers qui ont été créé après 18h du dossier windows

voila
il te reste plus cas faire des -or ou -and dans where pour avoir le bon resultat

tiens nous au courant et n'hésite pas à nous montrer ton code pour qu'on le corrige ensemble
 
Dernière édition: il y a 9 mois 1 semaine par Philippe.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 mois 1 semaine #31770 par Heslot
Bonjour,

Merci Philippe, of course, je préfère apprendre que de faire du copier/coller, en revanche j'ai trouvé des dizaines de pages internet qui traitent des scripts PowerShell mais pas du tout sur la recherche de fichiers par créneaux horaires donc pas trop expliqués. Anyway, voilà ce que j'ai testé et qui ne fonctionne pas :-( :
Get-ChildItem . | where {"{0:HH}:{0:mm}" -f ($_).LastWriteTime -ge "12:30" -and ($_).LastWriteTime -le "14:00"}

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 mois 1 semaine - il y a 9 mois 1 semaine #31772 par ericlm128
- Pourquoi ne pas utiliser la propriété adéquate à la date de création CreationTime ?
- Pour ma part je n'aime pas travailler les dates et temps comme des chaines de caractères. Je préfère travailler une date comme une date ( DateTime ) et un temps comme un temps ( TimeSpan ).
- Si tu veux sélectionner que les fichiers et pas les dossiers il faut le préciser à la commande Get-ChildItem avec -File
Get-ChildItem -LiteralPath "C:\Windows" -File | Where-Object {$_.CreationTime.TimeOfDay -ge (New-TimeSpan -Hours 12 -Minutes 30) -and $_.CreationTime.TimeOfDay -lt (New-TimeSpan -Hours 14)}

PS : (New-TimeSpan -Hours 12 -Minutes 30) pourrait être remplacé par [TimeSpan]::new(12, 30, 0) qui me parait plus concis
 
Dernière édition: il y a 9 mois 1 semaine par ericlm128.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 mois 1 semaine #31774 par Heslot
Bonjour,

Merci Eric, effectivement cela me parait plus efficace et répond à mes attentes.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.054 secondes
Propulsé par Kunena