Question
maj d'un enregistrement dans un fichier csv
- david lernould
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 11 ans 4 mois #18413
par david lernould
maj d'un enregistrement dans un fichier csv a été créé par david lernould
bonjour,
dans le cadre de l'utilisation d'un fichier dictionnaire au format csv , apres avoir recuperé une valeur dans ce fichier (colonne correspondant au chemin du fichier log a controler) via un import-csv j'ai besoins de modifier un enregistement sur la meme ligne pour la colonne suivante (correspondant au numéro de ligne du fichier log).
comment faire pour modifier uniquement cet enregistrement numero de ligne sans effectuer une boucle for-each ?
merci
dans le cadre de l'utilisation d'un fichier dictionnaire au format csv , apres avoir recuperé une valeur dans ce fichier (colonne correspondant au chemin du fichier log a controler) via un import-csv j'ai besoins de modifier un enregistement sur la meme ligne pour la colonne suivante (correspondant au numéro de ligne du fichier log).
comment faire pour modifier uniquement cet enregistrement numero de ligne sans effectuer une boucle for-each ?
merci
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 11 ans 4 mois #18415
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:maj d'un enregistrement dans un fichier csv
Salut,
je ne suis pas certains d'avoir compris( pas d'exemple), mais le terme dictionnaire laisse penser qu'une structure de donnée de type hashtable peut être une solution.
Import-csv crée un tableau, si tes clés sont uniques il te reste à le transformer.
je ne suis pas certains d'avoir compris( pas d'exemple), mais le terme dictionnaire laisse penser qu'une structure de donnée de type hashtable peut être une solution.
Import-csv crée un tableau, si tes clés sont uniques il te reste à le transformer.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- david lernould
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 11 ans 4 mois #18418
par david lernould
Réponse de david lernould sur le sujet Re:maj d'un enregistrement dans un fichier csv
pour explicité ma demande :
fichier csv :
code appli;chemin du fichier log;libelle application;derniere ligne traité par le programme;
dans mon fichier j'ai une vingtaine de ligne (une par appli)
donc après avoir trouvé le code appli dans le fichier je voudrais mettre à jour la colonne derniere ligne traité par le programme.
fichier csv :
code appli;chemin du fichier log;libelle application;derniere ligne traité par le programme;
dans mon fichier j'ai une vingtaine de ligne (une par appli)
donc après avoir trouvé le code appli dans le fichier je voudrais mettre à jour la colonne derniere ligne traité par le programme.
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 11 ans 4 mois #18420
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:maj d'un enregistrement dans un fichier csv
Essaie ceci :
[code:1]
Function New-HashTable {
#From blogs.msdn.com/b/powershell/archive/2007...7/new-hashtable.aspx
# Author: laurent Dardenne (ajout $Value)
# Version: 0.2
# Author: Jeffrey Snover
# Version: 0.1
#Requires -Version 1.0
param(
$Key=$(Throw \"USAGE: New-HashTable -Key <property>\"«»),
$Value,
[Switch]$NoOverWrite,
[Switch]$MakeArray
)
Begin
{
$hash = @{}
}
Process
{
#On définit la clé
$Property = $_.$key
#On définit la valeur de la clé à partir
# du nom de propriété contenue dans $Value
if ([String]::IsNullOrEmpty($Value))
{ $Object=$_
}else
{ $Object=$_.$Value
}
#Pas d'écrasement de la clé si elle existe
if ($NoOverWrite -And $hash.$Property)
{ Write-Error \"$Property already exists\"
}elseif ($MakeArray) #Il existe plusieurs occurences d'une même clé,
{ # on crée un tableau afin de mémoriser toutes les valeurs
if (!$hash.$Property)
{ $hash.$Property = new-object System.Collections.ArrayList
}
[void]$hash.$Property.Add($Object)
}else
{ #Il n'existe qu'une occurence d'une clé
#On la remplace si elle existe.
$hash.$Property = $Object
}
}
End
{
$hash
}
}#New-HashTable
$Datas=@(
New-object PSObject -Property @{
CodeAppli=1;
CheminDuFichierLog='c:\1';
LibelleApplication='Appli 1';
DerniereLigne='last Appli 1';
};
New-object PSObject -Property @{
CodeAppli=2;
CheminDuFichierLog='c:\2';
LibelleApplication='Appli 2';
DerniereLigne='last Appli 2';
};
New-object PSObject -Property @{
CodeAppli=3;
CheminDuFichierLog='c:\3';
LibelleApplication='Appli 3';
DerniereLigne='last Appli 3';
})
$datas|export-csv c:\temp\datas.csv -Delimiter ';'
$Apps=Import-csv c:\temp\datas.csv -Delimiter ';'|
New-HashTable -key \"CodeAppli\"
$Apps.\"1\"
$Apps.\"1\".DerniereLigne
[/code:1]
Et comme tu le constates, l'itération persiste.
[code:1]
Function New-HashTable {
#From blogs.msdn.com/b/powershell/archive/2007...7/new-hashtable.aspx
# Author: laurent Dardenne (ajout $Value)
# Version: 0.2
# Author: Jeffrey Snover
# Version: 0.1
#Requires -Version 1.0
param(
$Key=$(Throw \"USAGE: New-HashTable -Key <property>\"«»),
$Value,
[Switch]$NoOverWrite,
[Switch]$MakeArray
)
Begin
{
$hash = @{}
}
Process
{
#On définit la clé
$Property = $_.$key
#On définit la valeur de la clé à partir
# du nom de propriété contenue dans $Value
if ([String]::IsNullOrEmpty($Value))
{ $Object=$_
}else
{ $Object=$_.$Value
}
#Pas d'écrasement de la clé si elle existe
if ($NoOverWrite -And $hash.$Property)
{ Write-Error \"$Property already exists\"
}elseif ($MakeArray) #Il existe plusieurs occurences d'une même clé,
{ # on crée un tableau afin de mémoriser toutes les valeurs
if (!$hash.$Property)
{ $hash.$Property = new-object System.Collections.ArrayList
}
[void]$hash.$Property.Add($Object)
}else
{ #Il n'existe qu'une occurence d'une clé
#On la remplace si elle existe.
$hash.$Property = $Object
}
}
End
{
$hash
}
}#New-HashTable
$Datas=@(
New-object PSObject -Property @{
CodeAppli=1;
CheminDuFichierLog='c:\1';
LibelleApplication='Appli 1';
DerniereLigne='last Appli 1';
};
New-object PSObject -Property @{
CodeAppli=2;
CheminDuFichierLog='c:\2';
LibelleApplication='Appli 2';
DerniereLigne='last Appli 2';
};
New-object PSObject -Property @{
CodeAppli=3;
CheminDuFichierLog='c:\3';
LibelleApplication='Appli 3';
DerniereLigne='last Appli 3';
})
$datas|export-csv c:\temp\datas.csv -Delimiter ';'
$Apps=Import-csv c:\temp\datas.csv -Delimiter ';'|
New-HashTable -key \"CodeAppli\"
$Apps.\"1\"
$Apps.\"1\".DerniereLigne
[/code:1]
Et comme tu le constates, l'itération persiste.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.043 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- maj d'un enregistrement dans un fichier csv