Question
Export csv ; Point virgules pour case vide
- Corentin
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 7 ans 8 mois #25675
par Corentin
Export csv ; Point virgules pour case vide a été créé par Corentin
Bonjour à tous,
Après un export en csv, il y a des points virgules pour les cases vides et cela pose problème pour mon programme
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Desktop\test2\ecoles2.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$FichierCSV | where {$_.NOM_ECOLE -ne \"\"} | Foreach {
if ($_.PPPOE_USERNAME -ne $null){
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Desktop\test2\autoconf.ADDR-MAC-MODELE-PPPOE.clish\"
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Desktop\test2\autoconf.ADDR-MAC-MODELE-FO.clish\"
$CompteurFichierFO++
}
ForEach-Object {
$FichierModifié = $Modele -replace \"<NOM_ECOLE>\", $_.NOM_ECOLE `
-replace \"<ADDR_FW_LAN>\", $_.ADDR_FW_LAN `
-replace \"<ADDR_POOL_DHCP_LAN>\", $_.ADDR_POOL_DHCP_LAN`
-replace \"<ADDR_FW_WAN>\", $_.ADDR_FW_WAN `
-replace \"<ADDR_MASK_WAN>\", $_.ADDR_MASK_WAN `
-replace \"<ADDR_GW_WAN>\", $_.ADDR_GW_WAN `
-replace \"<MAC_FW>\", $_.MAC_FW `
-replace \"<PPPOE_USERNAME>\", $_.PPPOE_USERNAME `
-replace \"<PPPOE_PASSWORD>\", $_.PPPOE_PASSWORD
}
Set-Content \"C:\Users\Corentin.FOURRIER\Desktop\test2\autoconf.$($_.MAC_FW).clish\" -Value $FichierModifié
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO.\"[/code:1]
Le code fonctionne pour les lignes sans cases vides, mais pas pour les lignes ou il y a des points virgules en trop
Avez vous des solutions qui n'inclurait pas ajouter du code, par exemple faire quelque chose avec mon fichier excel, ou sinon une petite modif du code...
Corentin<br><br>Message édité par: Corentin, à: 26/06/18 13:28
Après un export en csv, il y a des points virgules pour les cases vides et cela pose problème pour mon programme
[code:1]$FichierCSV = Import-Csv -Path \"C:\Users\Corentin.FOURRIER\Desktop\test2\ecoles2.csv\" -Delimiter \";\"
$CompteurFichierPPPOE=0
$CompteurFichierFO=0
$compteur=0
$FichierCSV | ForEach {$_.MAC_FW = $_.MAC_FW.replace(\":\",\"-\"«»)}
$FichierCSV | where {$_.NOM_ECOLE -ne \"\"} | Foreach {
if ($_.PPPOE_USERNAME -ne $null){
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Desktop\test2\autoconf.ADDR-MAC-MODELE-PPPOE.clish\"
$CompteurFichierPPPOE++
}
else {
$Modele = Get-Content \"C:\Users\Corentin.FOURRIER\Desktop\test2\autoconf.ADDR-MAC-MODELE-FO.clish\"
$CompteurFichierFO++
}
ForEach-Object {
$FichierModifié = $Modele -replace \"<NOM_ECOLE>\", $_.NOM_ECOLE `
-replace \"<ADDR_FW_LAN>\", $_.ADDR_FW_LAN `
-replace \"<ADDR_POOL_DHCP_LAN>\", $_.ADDR_POOL_DHCP_LAN`
-replace \"<ADDR_FW_WAN>\", $_.ADDR_FW_WAN `
-replace \"<ADDR_MASK_WAN>\", $_.ADDR_MASK_WAN `
-replace \"<ADDR_GW_WAN>\", $_.ADDR_GW_WAN `
-replace \"<MAC_FW>\", $_.MAC_FW `
-replace \"<PPPOE_USERNAME>\", $_.PPPOE_USERNAME `
-replace \"<PPPOE_PASSWORD>\", $_.PPPOE_PASSWORD
}
Set-Content \"C:\Users\Corentin.FOURRIER\Desktop\test2\autoconf.$($_.MAC_FW).clish\" -Value $FichierModifié
$compteur++
}
echo \"Le programme a généré $compteur fichiers avec succés\"
echo \"$CompteurFichierPPPOE fichiers PPPOE et $CompteurFichierFO fichiers FO.\"[/code:1]
Le code fonctionne pour les lignes sans cases vides, mais pas pour les lignes ou il y a des points virgules en trop
Avez vous des solutions qui n'inclurait pas ajouter du code, par exemple faire quelque chose avec mon fichier excel, ou sinon une petite modif du code...
Corentin<br><br>Message édité par: Corentin, à: 26/06/18 13:28
Connexion ou Créer un compte pour participer à la conversation.
- Corentin
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 7 ans 8 mois #25676
par Corentin
Réponse de Corentin sur le sujet Re:[Résolu]Export csv, cases vides
Bon je suis débile j'ai résolu le problème une minute après avoir fais ce post..
J'ai modifié cette ligne :
[code:1]if ($_.PPPOE_USERNAME -ne \"\"){[/code:1]
ça ne fonctionnait pas à cause de $null à la place de \"\"
Par contre j'ai un autre soucis,
En faisant des tests j'ai remarqué que les fichiers générés ayant dans leurs noms $_.MAC_FW,
si dans mon csv j'ai deux lignes avec la même donnée dans $_.MAC_FW, un seul fichier sera généré et non deux
En gros le programme ne veut pas générer deux fichiers avec le même nom
j'ai testé le Add-Content à la place du Set-Content mais la ça met le contenu des deux lignes dans un seul fichier et non deux comme voulu
Je suis à court d'idées
<br><br>Message édité par: Corentin, à: 26/06/18 13:39
J'ai modifié cette ligne :
[code:1]if ($_.PPPOE_USERNAME -ne \"\"){[/code:1]
ça ne fonctionnait pas à cause de $null à la place de \"\"
Par contre j'ai un autre soucis,
En faisant des tests j'ai remarqué que les fichiers générés ayant dans leurs noms $_.MAC_FW,
si dans mon csv j'ai deux lignes avec la même donnée dans $_.MAC_FW, un seul fichier sera généré et non deux
En gros le programme ne veut pas générer deux fichiers avec le même nom
j'ai testé le Add-Content à la place du Set-Content mais la ça met le contenu des deux lignes dans un seul fichier et non deux comme voulu
Je suis à court d'idées
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 7 ans 8 mois #25677
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[Résolu]Export csv, cases vides
Salut,
Corentin écrit:
Exemple :
nom de serveur : possible duplication
Domaine+nom de serveur : duplication impossible dans le contexte d'un AD.
Corentin écrit:
Si dans ton contexte ta donnée n'est pas unique elle ne peut être une clé primaire. dans ce cas ajoute une donnée pour crée 'une clé primaire unique'.Je suis à court d'idées
Exemple :
nom de serveur : possible duplication
Domaine+nom de serveur : duplication impossible dans le contexte d'un AD.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.036 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Export csv ; Point virgules pour case vide