Question Mise en forme d'un CSV | Trier par date

Plus d'informations
il y a 1 an 11 mois - il y a 1 an 11 mois #32295 par Zamboni
Bonjour,
A partir d'un fichier txt (ou csv) ou j'ai déjà des données, je cherche à mettre mes données sous la forme de deux colonnes pour Excel (au format .CSV)
J'ai deux types de données:
- Date --> dd/mm/aaaa hh:mm
- Nombre

Ce qui donnerait:
ACTUELLEMENT en .TXT et CSV

01-05-2022 23:30
 0
 02-05-2022 23:30
 42 
 03-05-2022 23:30
 53 


RÉSULTAT SOUHAITÉ en .CSV dans Excel

Date                        Déconnexions
01/05/2022 22:30      0
02/05/2022 22:30     42
03/05/2022 22:30     53


Détails:
- Mon script actuel récupère tous les fichiers en .rpt d'un dossier, extrait le rapport journalier  "23h30" de chacun, et sort en un fichier qui liste tout ça
- Mon but est d'automatiser un doc Excel qui recense des rapports journalier


Au passage, savez vous s'il est possible de trier en fonction de la date? Excel exécute dans l'ordre des lignes à la sortie de mon fichier .csv (par exemple 12mai avant le 13avril)
 
Merci d'avance pour vos réponses


 
Dernière édition: il y a 1 an 11 mois par Zamboni.

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

Plus d'informations
il y a 1 an 11 mois #32298 par Laurent Dardenne
salut,
une possibilité :
gc c:\temp\datas.txt -ReadCount 2 |% {$o=1|select-object date,Déconnexions;$o.Date=$_[0];$o.Déconnexions=$_[1] ;$o }

Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: Zamboni

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

Plus d'informations
il y a 1 an 11 mois #32299 par Laurent Dardenne
ou en + lisible
gc c:\temp\datas -ReadCount 2 |% { New-Object -TypeName psCustomObject -Property @{Date=$_[0];Déconnexions=$_[1]} }

Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: Zamboni

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

Plus d'informations
il y a 1 an 11 mois - il y a 1 an 11 mois #32302 par Zamboni
Salut, 
Merci pour les réponses, mais je n'ai pas réussi à résoudre le problème en creusant ta piste.
En effet, avec ton code, sur le prompte tout sort parfaitement (dans 2 colonnes distinctes nommées Date et Déconnexions)
Mais voici ce qui sort sur Excel en .csv (ainsi qu'en txt ou en xls)

 A                                             B
@{Date=01-05-2022 23:30:01  Déconnexions=0}
@{Date=02-05-2022 23:30:01  Déconnexions=42 }



J'ai essayé d'adapter chacun de tes 2 codes, de l'associer, avec un Sort-Object et/ou Format Table -Property, mais je n'ai pas réussi à régler le soucis.
Dernière édition: il y a 1 an 11 mois par Zamboni.

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

Plus d'informations
il y a 1 an 11 mois - il y a 1 an 11 mois #32303 par Laurent Dardenne
Salut,
la forme @{Date=01-05-2022 23:30:01 Déconnexions=0} indique que tu traites l'objet comme une string, ici c'est la représentation d'un PSCustomObject :
$Objet=1|select Date,Déconnexions
$Objet.ToString()
#chaine vide

"$Objet" #Transformation interne par PS lors d'une substitution
#@{Date=; Déconnexions=}

C'est un autre pb et sans le code qui génére le résultat difficile de t'aider.
En passant Format-Table est dédié à la console.

Tutoriels PowerShell
Dernière édition: il y a 1 an 11 mois par Laurent Dardenne. Raison: balise code
Les utilisateur(s) suivant ont remercié: Zamboni

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

Plus d'informations
il y a 1 an 11 mois #32305 par Zamboni
Merci pour ton aide et la réponse, 
Mon code génère ce fichier, à partir d'une 15aine de log.rpt d'environ 1700 à 7k lignes chacun (version .txt en PJ)
(Je sais que c'est une usine à gaz qui tient avec des bouts de ficelles, mais c'est fonctionnel ah ah)
cls
<# ♣ LIGNES A REMPLIR ♣ : 6/ 25/ 26/ 30/ 31

 ♣ A REMPLIR : DOSSIER ou sont stockés les logs. Garder le "\*.rpt"
 Exemple: C:\xxx\yyy\*.rpt                                 #>
$a = Get-Content C:\Users\zambonis\EXL\Logirpt\*.rpt |

<# Épure le log : Ne garde que le résumé du rapport de hh:mm
Si besoin de plus d'heures/ modifier l'heure voulue:
 --> -match 'rows selected|hh:mm|hh:mm|hh:mm'
 --> -Pattern "hh:mm|hh:mm|hh:mm"                          #>
Where-Object {$_ -match 'rows selected|23:30'} |
Select-string -Pattern "23:30" -Context 0,1 


# NE PAS TOUCHER : Mise en forme 
$b = $a -replace '>|rows selected.',''  
$c = $b -replace '  no rows selected',' 0'
$d = $c -replace '[ ]+',' ' |

<# ♣ A REMPLIR : Désignez le chemin du DOSSIER du csv.
 - Mettre le même chemin aux 4 liens suivants
 - Garder le ".csv" et les "\temp.txt" à la fin.
Exemples: "C:\xxx\yyy\zzz.csv" et "C:\xxx\yyy\temp.txt"    #>
Set-Content C:\Users\zambonis\EXL\Logicsv\temp.txt
$e = Get-content C:\Users\zambonis\EXL\Logicsv\temp.txt
$f = $e.Substring(1) |

# ♣ A REMPLIR : Nommer le .csv: "c:\xxx\yyy\NOM.csv"
Set-Content C:\Users\zambonis\EXL\Logicsv\test3.csv
Remove-Item C:\Users\zambonis\EXL\Logicsv\temp.txt

Une fois Excel, si je met à la main les dates et les déco en colonnes, avec la fonction tri, les dates se mettent dans le bon ordre

 
Pièces jointes :

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

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