Question
Convertir un tableau
- Karon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 8 ans 2 mois #24837
par Karon
Convertir un tableau a été créé par Karon
Bonjour,
Je recherche un script Powershell qui pourrait convertir le tableau suivant :
[code:1]
TITRE1 TITRE2 TITRE3 TITRE4 TITRE5 TITRE6 TITRE6
AAAA BBBBBBBBBB DDDDDDDDDDD EEEEEEEEEEEEEEEEEEEEEEEEEE 9 2014-05-22 15:20:10.203 2018-01-04 12:01:27.900
[/code:1]
Sous cette forme :
[code:1]
TITRE1;TITRE2;TITRE3;TITRE4;TITRE5;TITRE6;TITRE6
AAAA;BBBBBBBBBB;DDDDDDDDDDD;EEEEEEEEEEEEEEEEEEEEEEEEEE;9;2014-05-22 15:20:10.203;2018-01-04 12:01:27.900
[/code:1]
Tout en sachant que je ne connais pas d'avance :
J'avais bien un code qui comptait les tirets mais je me retrouve avec un tableau qui perd quelques données ou avec un décalage dans les colonnes.
[code:1]
ForEach ($ligne in $file)
{
If ($nbr -eq $ligne_tiret)
{
$Decoup = $ligne.Split(\" \"«»)
$Tiret = $Decoup.LastIndexOfAny(\"-\"«»)
$Tab_Tiret_Tmp += $Tiret
ForEach ($num in $Tab_Tiret_Tmp)
{
$num++
$Tab_Tiret += $num
}
}
$nbr++
}
[/code:1]
Cordialement,
Je recherche un script Powershell qui pourrait convertir le tableau suivant :
[code:1]
TITRE1 TITRE2 TITRE3 TITRE4 TITRE5 TITRE6 TITRE6
AAAA BBBBBBBBBB DDDDDDDDDDD EEEEEEEEEEEEEEEEEEEEEEEEEE 9 2014-05-22 15:20:10.203 2018-01-04 12:01:27.900
[/code:1]
Sous cette forme :
[code:1]
TITRE1;TITRE2;TITRE3;TITRE4;TITRE5;TITRE6;TITRE6
AAAA;BBBBBBBBBB;DDDDDDDDDDD;EEEEEEEEEEEEEEEEEEEEEEEEEE;9;2014-05-22 15:20:10.203;2018-01-04 12:01:27.900
[/code:1]
Tout en sachant que je ne connais pas d'avance :
-
Ni la largeur des colonnes
-
Ni le nombre de colonnes
J'avais bien un code qui comptait les tirets mais je me retrouve avec un tableau qui perd quelques données ou avec un décalage dans les colonnes.
[code:1]
ForEach ($ligne in $file)
{
If ($nbr -eq $ligne_tiret)
{
$Decoup = $ligne.Split(\" \"«»)
$Tiret = $Decoup.LastIndexOfAny(\"-\"«»)
$Tab_Tiret_Tmp += $Tiret
ForEach ($num in $Tab_Tiret_Tmp)
{
$num++
$Tab_Tiret += $num
}
}
$nbr++
}
[/code:1]
Cordialement,
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 2 mois #24839
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Convertir un tableau
Salut,
il faut connaitre le format d'export d'origine.
Par exemple, est-ce que le séparateur de champ est une tabulation ?
il faut connaitre le format d'export d'origine.
Par exemple, est-ce que le séparateur de champ est une tabulation ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Karon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 8 ans 2 mois #24840
par Karon
Réponse de Karon sur le sujet Re:Convertir un tableau
Le séparateur de champ est un espace.
Connexion ou Créer un compte pour participer à la conversation.
- Karon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 8 ans 2 mois #24841
par Karon
Réponse de Karon sur le sujet Re:Convertir un tableau
J'ai réussi à trouver quelque chose qui semble répondre à ma question :
[code:1]
##
## Variables
##
$debut = 0
$REP_LOCAL = Get-Location
$PATH_CRITIQUE = \"$REP_LOCAL\Fichier de gestion\" ## Répertoire ou se trouve le fichier des PC critiques
$file = Get-Content \"$PATH_CRITIQUE\lansweeper_20180112.log\"
$Tab_Tiret_Tmp = @()
$Tab_Tiret = @()
$nbr = 0
$ligne_tiret = 1 ## Ligne des tirets
$entete = 2
$i = 0
$Count = $Tab_Tiret.Count
$nbr = 0
Write-Host (\"Nombre de ligne dans le tableau : {0}\" -f $Count)
Write-Host (\"---\")
ForEach ($ligne in $file)
{
If ($nbr -eq $ligne_tiret)
{
$Decoup = $ligne.Split(\" \")
$Tiret = $Decoup.LastIndexOfAny(\"-\")
$Tab_Tiret_Tmp += $Tiret
ForEach ($num in $Tab_Tiret_Tmp)
{
$num++
$Tab_Tiret += $num
Write-Host (\"Largeur de la colonne : {0}\" -f $num)
}
}
$Count = $Tab_Tiret.Count -1
$deuxieme = 0
$debut = 0
$ligne_out = \"\"
$i = 0
Write-Host (\" #### : {0}\" -f $i) -ForegroundColor DarkCyan
If (($nbr -ge $entete) -and ($Count -gt 0))
{
$ligne_tmp = $ligne
#$ligne
for($j=0;$j -le $Count;$j++)
{
If ($i -lt 1)
{
$longueur = $Tab_Tiret[$j]
$deuxieme = $Tab_Tiret[$j] + 1
Write-Host (\" debut/longueur/i = 0/{0}/{1}\" -f $longueur,$i) -foregroundcolor blue
$texte = $ligne.Substring(0,$longueur).Replace(\" \",\"\")
$ligne_out = $texte
Write-Host (\" ligne_out = {0}\" -f $ligne_out) -foregroundcolor DarkGreen
$i++
}
ElseIf ($i -eq 1)
{
$longueur = $Tab_Tiret[$j]
$debut = $deuxieme
Write-Host (\" debut/longueur/i = {0}/{1}/{2}\" -f $debut,$longueur,$i) -foregroundcolor blue
$texte = $ligne.Substring($deuxieme,$longueur).Replace(\" \",\"\")
$ligne_out = $ligne_out + \";\" + $texte
$debut = $debut + $longueur + 1
$i++
}
Else
{
$longueur = $Tab_Tiret[$j]
Write-Host (\" ### : {0}\" -f $i)
$texte = $ligne.Substring($debut,$longueur).Replace(\" \",\"\")
$ligne_out = $ligne_out + \";\" + $texte
Write-Host (\" debut/longueur/i = {0}/{1}/{2}\" -f $debut,$longueur,$i) -foregroundcolor red
$debut = $Tab_Tiret[$j] + $debut + 1
Write-Host (\" debut/longueur = {0}/{1}\" -f $debut,$longueur) -foregroundcolor blue
}
}
}
$nbr++
$ligne_out | out-file \"$PATH_CRITIQUE\lansweeper.out\" -append
}
[/code:1]<br><br>Message édité par: Karon, à: 15/01/18 14:49
[code:1]
##
## Variables
##
$debut = 0
$REP_LOCAL = Get-Location
$PATH_CRITIQUE = \"$REP_LOCAL\Fichier de gestion\" ## Répertoire ou se trouve le fichier des PC critiques
$file = Get-Content \"$PATH_CRITIQUE\lansweeper_20180112.log\"
$Tab_Tiret_Tmp = @()
$Tab_Tiret = @()
$nbr = 0
$ligne_tiret = 1 ## Ligne des tirets
$entete = 2
$i = 0
$Count = $Tab_Tiret.Count
$nbr = 0
Write-Host (\"Nombre de ligne dans le tableau : {0}\" -f $Count)
Write-Host (\"---\")
ForEach ($ligne in $file)
{
If ($nbr -eq $ligne_tiret)
{
$Decoup = $ligne.Split(\" \")
$Tiret = $Decoup.LastIndexOfAny(\"-\")
$Tab_Tiret_Tmp += $Tiret
ForEach ($num in $Tab_Tiret_Tmp)
{
$num++
$Tab_Tiret += $num
Write-Host (\"Largeur de la colonne : {0}\" -f $num)
}
}
$Count = $Tab_Tiret.Count -1
$deuxieme = 0
$debut = 0
$ligne_out = \"\"
$i = 0
Write-Host (\" #### : {0}\" -f $i) -ForegroundColor DarkCyan
If (($nbr -ge $entete) -and ($Count -gt 0))
{
$ligne_tmp = $ligne
#$ligne
for($j=0;$j -le $Count;$j++)
{
If ($i -lt 1)
{
$longueur = $Tab_Tiret[$j]
$deuxieme = $Tab_Tiret[$j] + 1
Write-Host (\" debut/longueur/i = 0/{0}/{1}\" -f $longueur,$i) -foregroundcolor blue
$texte = $ligne.Substring(0,$longueur).Replace(\" \",\"\")
$ligne_out = $texte
Write-Host (\" ligne_out = {0}\" -f $ligne_out) -foregroundcolor DarkGreen
$i++
}
ElseIf ($i -eq 1)
{
$longueur = $Tab_Tiret[$j]
$debut = $deuxieme
Write-Host (\" debut/longueur/i = {0}/{1}/{2}\" -f $debut,$longueur,$i) -foregroundcolor blue
$texte = $ligne.Substring($deuxieme,$longueur).Replace(\" \",\"\")
$ligne_out = $ligne_out + \";\" + $texte
$debut = $debut + $longueur + 1
$i++
}
Else
{
$longueur = $Tab_Tiret[$j]
Write-Host (\" ### : {0}\" -f $i)
$texte = $ligne.Substring($debut,$longueur).Replace(\" \",\"\")
$ligne_out = $ligne_out + \";\" + $texte
Write-Host (\" debut/longueur/i = {0}/{1}/{2}\" -f $debut,$longueur,$i) -foregroundcolor red
$debut = $Tab_Tiret[$j] + $debut + 1
Write-Host (\" debut/longueur = {0}/{1}\" -f $debut,$longueur) -foregroundcolor blue
}
}
}
$nbr++
$ligne_out | out-file \"$PATH_CRITIQUE\lansweeper.out\" -append
}
[/code:1]<br><br>Message édité par: Karon, à: 15/01/18 14:49
Connexion ou Créer un compte pour participer à la conversation.
- Karon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 8 ans 2 mois #24842
par Karon
Réponse de Karon sur le sujet Re:Convertir un tableau
Je suis preneur pour toutes les remarques.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 2 mois #24845
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Convertir un tableau
Karon écrit:
N'est-ce pas la seconde ligne,nb de tirets, qui détermine la taille des champs et leur nombre ?
Dans ce cas ce contenu, si c'est une date heure, posera pb il me semble :Le séparateur de champ est un espace.
2014-05-22 15:20:10.203
N'est-ce pas la seconde ligne,nb de tirets, qui détermine la taille des champs et leur nombre ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.066 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Convertir un tableau