Question
Recuperer un fichier à une date précise (Résolu)
- Robin Lemesle
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 15 ans 6 mois #2780
par Robin Lemesle
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
Réponse de Robin Lemesle sur le sujet Re:Script pour recuperer un fichier à la date du jour
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.
- Schneider
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 15 ans 6 mois #2781
par Schneider
Réponse de Schneider sur le sujet Re:Script pour recuperer un fichier à la date du j
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.
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.
- daniel soares
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 15 ans 6 mois #2782
par daniel soares
Réponse de daniel soares sur le sujet Re:Script pour recuperer un fichier à la date du j
Robin écrit:
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)}
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.
- maycry
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 119
- Remerciements reçus 0
il y a 15 ans 6 mois #2784
par maycry
Réponse de maycry sur le sujet Re:Script pour recuperer un fichier à la date du j
Pour ma part ^^
$DateLog = Get-Date -UFormat \"%d/%m/%Y\"
$DateLog >> \"C:\DateLog.log\"
$DateLog = Type \"C:\DateLog.log\"
$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.
- Schneider
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 15 ans 6 mois #2787
par Schneider
Réponse de Schneider sur le sujet Re:Script pour recuperer un fichier à la date du j
Bonjour Robin,
Merci pour le script je comprends un peu mieux. Par contre je dois faire une erreur 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.
Merci pour le script je comprends un peu mieux. Par contre je dois faire une erreur 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.
- daniel soares
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 15 ans 6 mois #2789
par daniel soares
Réponse de daniel soares sur le sujet Re:Script pour recuperer un fichier à la date du j
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]
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.077 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Recuperer un fichier à une date précise (Résolu)