hatschi1
Goto Top

Txt Dateien verketten mit Powershell

Hallo zusammen,

ich habe zwei Txt-Dateien:

In A.txt steht folgendes:
A
B
C

In B.txt steht folgendes:
1
2
3

Jetzt möchte ich gerne mit Powershell, dass an jede Zeile der Datei A.txt die Zeilen der Datei
B.txt angehangen werden. Das Ergebnis sollte so sein:

A1
A2
A3
B1
B2
B3
C1
C2
C3

Jemand eine Idee?
Danke und viele Grüße
Claudi

Content-ID: 5606775767

Url: https://administrator.de/contentid/5606775767

Ausgedruckt am: 26.09.2024 um 23:09 Uhr

5175293307
5175293307 24.01.2023 aktualisiert um 16:21:35 Uhr
Goto Top
[array]$file1 = Get-Content D:\test1.txt
[array]$file2 = Get-Content D:\test2.txt
$out = foreach($lineA in $file1){
    foreach($lineB in $file2) {
        $lineA + $lineB
    }
}
$out | Set-Content D:\dateineu.txt
Wurstel

-- korrigiert da erst missverstanden --
erikro
erikro 24.01.2023 um 16:16:16 Uhr
Goto Top
Da wollte ich doch gerade das korrigieren und dann löscht Du das einfach face-wink

Moin,

Zitat von @5175293307:

[array]$file1 = Get-Content C:\file1.txt
[array]$file2 = Get-Content C:\file2.txt
$out = for ($i = 0; $i -lt $file1.Count;$i++){
    $file1[$i] + $file2[$i]
}
$out | Set-Content dateineu.txt

Fast. Aber da ist ein Fehler drin:

$file1 = Get-Content C:\file1.txt
$file2 = Get-Content C:\file2.txt
$out = for ($i = 0; $i -lt ($file1.Count -1);$i++){

# Es soll **jede** Zeile aus file2 an die Zeile aus file1 angehängt werden
    foreach($line in $file2) {    
        $file1[$i] + $line
    }

}
$out | Set-Content dateineu.txt

Liebe Grüße

Erik
5175293307
5175293307 24.01.2023 aktualisiert um 18:46:44 Uhr
Goto Top
Da wollte ich doch gerade das korrigieren und dann löscht Du das einfach face-wink
Ja hatte ich erst überlesen das jede Zeile von A mit jeder Zeile aus B ausgegeben werden muss und nicht nur jede Zeile kombiniert mit der anderen face-smile, habe ich oben angepasst ...
> $i -lt ($file1.Count -1)
Dann musst du aber bei der Variante auch aus -lt ein -le machen wenn du eins vom Count abziehst, sonst fehlt am Ende eine Zeile face-smile.
Hatschi1
Hatschi1 24.01.2023 um 18:53:32 Uhr
Goto Top
Hallo ihr beiden,
vielen Dank, funktioniert super!! face-smile

Würde das auch mit drei Dateien funktionieren?
Also alles aus der dritten Datei an jede Zeile der der zweiten Datei
und dann alles der zweiten Datei an jede Zeile der ersten Datei?

Wi eine doppelten Schleife, oder?

LG
Claudi
5175293307
Lösung 5175293307 24.01.2023 aktualisiert um 20:34:21 Uhr
Goto Top
Zitat von @Hatschi1:
Also alles aus der dritten Datei an jede Zeile der der zweiten Dateiund dann alles der zweiten Datei an jede Zeile der ersten Datei?

Ja

[array]$file1 = Get-Content D:\test1.txt
[array]$file2 = Get-Content D:\test2.txt
[array]$file3 = Get-Content D:\test3.txt

$out = foreach($lineA in $file1){
    foreach($lineB in $file2) {
        $lineA + $lineB
    }
}
$out += foreach($lineA in $file2){
    foreach($lineB in $file3) {
        $lineA + $lineB
    }
}
$out | Set-Content D:\dateineu.txt

Oder willst du alle drei kombinieren? Dann mit einer weitere verschachtelten Schleife arbeiten ...
[array]$file1 = Get-Content D:\test1.txt
[array]$file2 = Get-Content D:\test2.txt
[array]$file3 = Get-Content D:\test3.txt

$out = foreach($lineA in $file1){
    foreach($lineB in $file2) {
        foreach($lineC in $file3) {
            $lineA + $lineB + $lineC
        }
    }
}
$out | Set-Content D:\dateineu.txt
Nimm das was halt zutrifft.
Hatschi1
Hatschi1 25.01.2023 um 08:18:50 Uhr
Goto Top
Vielen Dank!! Läuft perfekt face-smile
LG