Question
Mise en forme d'un CSV | Trier par date
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 1 an 10 mois #32306
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Mise en forme d'un CSV | Trier par date
Je ne vois pas ma proposition de transformation dans ton code...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Zamboni
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 1 an 10 mois - il y a 1 an 10 mois #32307
par Zamboni
Réponse de Zamboni sur le sujet Mise en forme d'un CSV | Trier par date
Pardon, en effet il est sur un autre onglet PowerShell (ou je récupère le résultat du script précédent) pour segmenter en parties, avant de tout imbriquer dans un script final
(Les #notations serviront à ce que quelqu'un d'autre dans l'entreprise puisse éditer mon code au besoin)
(Les #notations serviront à ce que quelqu'un d'autre dans l'entreprise puisse éditer mon code au besoin)
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 les logs : Ne garde que les résumés des rapports de 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
Get-Content C:\Users\zambonis\EXL\Logicsv\test3.csv -ReadCount 2 |
% {$o=1|select-object date,Déconnexions;$o.Date=$_[0];$o.Déconnexions=$_[1] ;$o } |
#Get-Content C:\Users\zambonis\EXL\Logicsv\test3.csv -ReadCount 2 |
#% { New-Object -TypeName psCustomObject -Property @{Date=$_[0];Déconnexions=$_[1]} }
<#
$Objet=1|select Date,Déconnexions
$Objet.ToString()
#chaine vide
"$Objet" #Transformation interne par PS lors d'une substitution |
#@{Date=; Déconnexions=}
#>
Set-Content C:\Users\zambonis\EXL\Logicsv\test4.csv
Dernière édition: il y a 1 an 10 mois par Zamboni.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 1 an 10 mois - il y a 1 an 10 mois #32308
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Mise en forme d'un CSV | Trier par date
Le cmdlet Set-Content traite du texte, Export-csv traite du texte
structuré
:
Sous Powershell on manipule des objets que l'on peut transformer dans un format particulier (CSV,XML,JSON,etc).
Get-Content C:\Users\zambonis\EXL\Logicsv\test3.csv -ReadCount 2 |
Foreach-Object { New-Object -TypeName psCustomObject -Property @{Date=$_[0];Déconnexions=$_[1]} } |
Export-CSV C:\Users\zambonis\EXL\Logicsv\test4.csv
Sous Powershell on manipule des objets que l'on peut transformer dans un format particulier (CSV,XML,JSON,etc).
Tutoriels PowerShell
Dernière édition: il y a 1 an 10 mois par Laurent Dardenne.
Les utilisateur(s) suivant ont remercié: Zamboni
Connexion ou Créer un compte pour participer à la conversation.
- Zamboni
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 1 an 10 mois - il y a 1 an 10 mois #32309
par Zamboni
Réponse de Zamboni sur le sujet Mise en forme d'un CSV | Trier par date
Ton dernier script faisait une seule colonne dans Excel, au final j'ai fait autrement en intégrant ton premier script, et en enlevant les "@{date=" et "déconnexion}". Le résultat final correspond à peu près à mes attentes
Ce qui donne une fois fini:
Et sur Excel, une fois le tri appliqué
Ce projet et ton aide m'ont permis de m'améliorer en Powershell.
Bonne journée à toi
Ce qui donne une fois fini:
cls
<#
♣ Ce script analyse tous les rapports, et créé un fichier Excel qui recense les déconnexions de chaque jour ♣
Ouvrir le fichier de sortie, dans Excel sélectionner tout le tableau:
- Onglet accueil/ trier et filtrer -> "du plus ancien au récent"
♣ DÉFINISSEZ LES CHEMINS ♣
Le fichier de sortie doit être comme tel: 'C:\XXX\YYY\Nom_fichier.csv'
Le dossier ou sont stockés les rpt doit être : 'C:\xxx\yyy\*.rpt'
Les fichiers temp_a et temp_b sont temporaires: 'c:\xxx\yyy\temp_a.txt'
#>
$FICHIER_DE_SORTIE= 'C:\Users\zambonis\EXL\Logicsv\rapport.csv'
$DOSSIER_DES_RPT = 'C:\Users\zambonis\EXL\Logirpt\*.rpt'
$temp_a = 'C:\Users\zambonis\EXL\Logicsv\temp_a.txt'
$temp_b = 'C:\Users\zambonis\EXL\Logicsv\temp_b.txt'
$a = Get-Content $DOSSIER_DES_RPT |
<#
Si besoin d'une heure différente que 23:30 et/ou de plusieurs horaires:
--> -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
# Mise en forme
$b = $a -replace '>|rows selected.',''
$c = $b -replace ' no rows selected',' 0'
$d = $c -replace '[ ]+',' ' |
Set-Content $temp_a
$e = Get-content $temp_a
$f = $e.Substring(1) |
Set-Content $temp_a
Get-Content $temp_a -ReadCount 2 |
% {$o=1|select-object date,Déconnexions;$o.Date=$_[0];$o.Déconnexions=$_[1] ;$o } |
Set-Content $temp_b
$g = Get-Content $temp_b
$h = $g -replace '@{date=|Déconnexions=|}','' |
Set-content $FICHIER_DE_SORTIE
Remove-Item $temp_a
Remove-Item $temp_b
Et sur Excel, une fois le tri appliqué
Encore merci, j'y serai encore sans ton idée du Select-String -contexte et ton script du ReadCount.A B
26/04/2022 23:30 0
27/04/2022 23:30 42
Ce projet et ton aide m'ont permis de m'améliorer en Powershell.
Bonne journée à toi
Dernière édition: il y a 1 an 10 mois par Zamboni.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.074 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Mise en forme d'un CSV | Trier par date