Question
Concatenation de fichier par ligne (RESOLU)
- Nicolas Caron
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 8 ans 11 mois #23425
par Nicolas Caron
Concatenation de fichier par ligne (RESOLU) a été créé par Nicolas Caron
Bonjour à tous,
J'ai créé un gros script dont je suis assez fier en guise de semi-interface pour un de mes logiciels. 95% de mon script fonctionne parfaitement (notamment grâce a ce que j'ai trouvé sur ce forum et j'en remercie au passage les contributeurs). Mais il y a un passage que je n'arrive pas à faire, je m'explique :
J'ai un fichier A et un fichier B composés de X lignes. Je voudrais créer un fichier composé d'une ligne de A, puis une ligne B et ainsi de suite, cela donnerait :
Ligne1 Fichier A
Ligne1 Fichier B
Ligne2 Fichier A
Ligne2 Fichier B
etc...
J'ai essayé beaucoup de chose, mais je me retrouve systématiquement avec l'intégralité du fichier A suivi de l'intégralité du fichier B :
$Monfichier = Import-Csv fichierA
foreach ($Line in $Monfichier) {
Get-content fichierA | Select-content -Skip 1|Add-Content fichierC
Get-content fichierB | Select-content -Skip 1|Add-Content fichierC
}
Je ne sais pas si je suis loin ou pas...J'ai trouvé beaucoup de script en mesure de lire mon fichier ligne par ligne mais rien qui me permette d'alterner l'envoi dans un fichier. Si vous pouvez m'aider sur ce point, je vous en serais super reconnaissant!
Merci
Message édité par: Niiiko77, à: 5/04/17 07:48
Message édité par: Niiiko77, à: 5/04/17 07:49<br><br>Message édité par: Niiiko77, à: 5/04/17 13:40
J'ai créé un gros script dont je suis assez fier en guise de semi-interface pour un de mes logiciels. 95% de mon script fonctionne parfaitement (notamment grâce a ce que j'ai trouvé sur ce forum et j'en remercie au passage les contributeurs). Mais il y a un passage que je n'arrive pas à faire, je m'explique :
J'ai un fichier A et un fichier B composés de X lignes. Je voudrais créer un fichier composé d'une ligne de A, puis une ligne B et ainsi de suite, cela donnerait :
Ligne1 Fichier A
Ligne1 Fichier B
Ligne2 Fichier A
Ligne2 Fichier B
etc...
J'ai essayé beaucoup de chose, mais je me retrouve systématiquement avec l'intégralité du fichier A suivi de l'intégralité du fichier B :
$Monfichier = Import-Csv fichierA
foreach ($Line in $Monfichier) {
Get-content fichierA | Select-content -Skip 1|Add-Content fichierC
Get-content fichierB | Select-content -Skip 1|Add-Content fichierC
}
Je ne sais pas si je suis loin ou pas...J'ai trouvé beaucoup de script en mesure de lire mon fichier ligne par ligne mais rien qui me permette d'alterner l'envoi dans un fichier. Si vous pouvez m'aider sur ce point, je vous en serais super reconnaissant!
Merci
Message édité par: Niiiko77, à: 5/04/17 07:48
Message édité par: Niiiko77, à: 5/04/17 07:49<br><br>Message édité par: Niiiko77, à: 5/04/17 13:40
Connexion ou Créer un compte pour participer à la conversation.
- vianney
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 8 ans 11 mois #23428
par vianney
Réponse de vianney sur le sujet Re:Concatenation de fichier par ligne
Essaye ça
[code:1]
$fichier1 = get-content(\".\Fichier1.txt\"«»)
$fichier2 = get-content(\".\Fichier2.txt\"«»)
$Count = $fichier1.count
for ($i=0; $i -le $Count; $i++){
Add-Content \".\Fichier3.txt\" $fichier1[$i]
Add-Content \".\Fichier3.txt\" $fichier2[$i]
}[/code:1]
[code:1]
$fichier1 = get-content(\".\Fichier1.txt\"«»)
$fichier2 = get-content(\".\Fichier2.txt\"«»)
$Count = $fichier1.count
for ($i=0; $i -le $Count; $i++){
Add-Content \".\Fichier3.txt\" $fichier1[$i]
Add-Content \".\Fichier3.txt\" $fichier2[$i]
}[/code:1]
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 11 mois #23434
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Concatenation de fichier par ligne
Il faut contrôler que les collections soient de même taille, sinon il y a un risque de perte de données.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Nicolas Caron
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 8 ans 11 mois #23436
par Nicolas Caron
Réponse de Nicolas Caron sur le sujet Re:Concatenation de fichier par ligne
Alors, tout d'abord, merci pour votre aide. Pas de soucis pour la longueur des fichiers, puisque il y a exactement le même nombre de ligne, et c'est même fait exprès.
Alors j'ai essayé :
$fichier1 = get-content(\".\Fichier1.txt\")
$fichier2 = get-content(\".\Fichier2.txt\")
$Count = $fichier1.count
for ($i=0; $i -le $Count; $i++){
Add-Content \"Fichier3.txt\" $fichier1[$i]
Add-Content \"Fichier3.txt\" $fichier2[$i]
}
Et il me renvoi l'erreur suivante :
Indexation impossible dans un tableau Null.
Au caractère C:\Interface - Sage\SAGE.ps1:27 : 5
+ Add-Content \"Fichier3.txt\" $fichier2[$i]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (
[], RuntimeException
+ FullyQualifiedErrorId : NullArray
Alors j'ai essayé :
$fichier1 = get-content(\".\Fichier1.txt\")
$fichier2 = get-content(\".\Fichier2.txt\")
$Count = $fichier1.count
for ($i=0; $i -le $Count; $i++){
Add-Content \"Fichier3.txt\" $fichier1[$i]
Add-Content \"Fichier3.txt\" $fichier2[$i]
}
Et il me renvoi l'erreur suivante :
Indexation impossible dans un tableau Null.
Au caractère C:\Interface - Sage\SAGE.ps1:27 : 5
+ Add-Content \"Fichier3.txt\" $fichier2[$i]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (
+ FullyQualifiedErrorId : NullArray
Connexion ou Créer un compte pour participer à la conversation.
- Nicolas Caron
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 8 ans 11 mois #23437
par Nicolas Caron
Réponse de Nicolas Caron sur le sujet Re:Concatenation de fichier par ligne
Désolé, j'ai trouvé mon erreur, j'ai pas respecté la casse dans le nom du fichier, sinon ça marche super!!! Merci beaucoup pour votre aide, vraiment!
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Concatenation de fichier par ligne (RESOLU)