Question Recuperer un fichier à une date précise (Résolu)

Plus d'informations
il y a 12 ans 2 semaines #2780 par Robin

mais je pensais que c^était plus simple de filtrer sur la date de création en


c'est une question de choix. Moi je filtrerais sur le nom, et ce n'est pas plus compliqué.

Exemple (avec le detail):

[code:1]$date = get-date
$date.adddays(-1)
$date_formatee = $date.tostring('yyyyMMdd')


gci c:\temp | where{$_.name -like \"deghbh$($date_formatee).log\"}[/code:1]

Robin MVP PowerShell

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

Plus d'informations
il y a 12 ans 2 semaines #2781 par Vmax666
Re bonjour,

Merci pour les précisions sur le GCI.
Je souhaite le jour ou je lance le script récupérer dans un répertoire un fichier (unique) crée le jour précédent et le copier vers un autre serveur.

Ce répertoire de log se remplit tous les jours avec un fichier de log portant un nom différent faisant référence à la date system de création et se clotûre la nuit d'après.
Ex le 08.09.2008 à 3h du mat est crée le fichier XXXX20080908.log Il se remplit et son attribut de date se modifie constamment pour se terminer à la clotûre le 09.09.2008 avec le nom XXXX20080908 et une date systeme au 09.09.2008.
Comme instantanément un autre fichier se crée nommé XXXX20080909 avec une date système au 09.09.2008 j'ai deux fichiers si je récupére la nuit en cours.
Donc je pense que le plus simple est de récupérer par script le fichier du rep crée la nuit précedente et de le piper en le copiant ailleurs mais ce n'est peur être pas la meilleure solution je ne sais pas.

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

Plus d'informations
il y a 12 ans 2 semaines #2782 par Dan
Robin écrit:

Un Get-Item Get-Item obtient l'élément à l'emplacement spécifié, il ne fait pas de liste. Dans ton cas, si tu es certain de ne jamais avoir de doublon, tu peux utiliser GI.


attention get-item ne retourne rien si il y a deux fichiers qui respectent le filtre c'est un point d'importance et ton script doit en tenir compte

get-childitem si il y a deux fichiers te retournera une collection donc fort probable qu'il faille en tenir fortement compte aussi :)

d'après tes explications le code de Robin fonctionne parfaitement mais tu peux mettre les deux contrôles dans ta fonction where si tu veux blinder
where{(nom fichier a la date d'hier)and(lastwritetime a la date d'aujourd'hui)}

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

Plus d'informations
il y a 12 ans 2 semaines #2784 par chris
Pour ma part ^^


$DateLog = Get-Date -UFormat \"%d/%m/%Y\"
$DateLog >> \"C:\DateLog.log\"

$DateLog = Type \"C:\DateLog.log\"

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

Plus d'informations
il y a 12 ans 1 semaine #2787 par Vmax666
Bonjour Robin,

Merci pour le script je comprends un peu mieux. Par contre je dois faire une erreur :unsure: car le script de test

$date = get-date
$date.adddays(-1)
$date_formatee = $date.tostring('yyyyMMdd')
get-childitem c:\temp\mt | where{$_.name -like \"MSGTRK$($date_formatee)-1.log\"} |copy-item -destination c:\ts

executé le 9 septembre me donne bien le 8 septembre apres le adddays mais copie le fichier MSGTRK20080909-1.LOG dans le rep C:\TS

les fichiers de log ont exactement ce nommage: MSGTRK20080909-1.LOG MSGTRK20080908-1.LOG etc.

Le nommage des fichiers en -1.log sert si je dépasse la taille imposée du log journalier. J'ai prévue large mais si cette taille etait dépassée ou que j'oublie dans les mois ou années j'aurai un nom identique ex MSGTRK20080909-2.LOG et ce serait bien qu'il soit pris aussi. C'est pour cela que au départ je pensais partir sur la date de création et récupérer quels que soit leur nombre (bon ca ira jamais au dela de 2 je pense mais ...)les fichiers crées la nuit précédente.

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

Plus d'informations
il y a 12 ans 1 semaine #2789 par Dan
oui tu ne modifie pas la valeur de la variable date
le bon code est

[code:1]
$date = get-date
$date = $date.adddays(-1)

$date_formatee = $date.tostring('yyyyMMdd')

get-childitem c:tempmt | where{$_.name -like \"MSGTRK$($date_formatee)-1.log\"} |copy-item -destination c:ts
[/code:1]

ou en plus simple

[code:1]
$date = (get-date).adddays(-1)
$date_formatee = $date.tostring('yyyyMMdd')
get-childitem c:tempmt | where{$_.name -like \"MSGTRK$($date_formatee)-1.log\"} |copy-item -destination c:ts
[/code:1]

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

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