Powershell: Das erste Wort einer txt-Datei in zwei weiteren txt-Dateien an erster Stelle kopieren
Hallo!
Versuche mit Powershell das erste Wort aus einer txt-Datei im 1. Ordner in zwei weiteren txt-Dateien im 2.Ordner an erster Stelle zu kopieren.
Ausgangssituation:
1.Ordner
txt-Datei Inhalt=
Stadt
Land
Fluß
2. Ordner
1.txt-Datei=
Land
Fluß
2.txt-Datei=
Hund
Katze
Ziel ist es:
1.Ordner
txt-Datei Inhalt=
Stadt
Land
Fluß
2. Ordner
1.txt-Datei=
Stadt
Land
Fluß
2.txt-Datei=
Stadt
Hund
Katze
Ich hoffe ihr könnt mir diesesmal auch wieder weiterhelfen.
Vielen Dank.
Versuche mit Powershell das erste Wort aus einer txt-Datei im 1. Ordner in zwei weiteren txt-Dateien im 2.Ordner an erster Stelle zu kopieren.
Ausgangssituation:
1.Ordner
txt-Datei Inhalt=
Stadt
Land
Fluß
2. Ordner
1.txt-Datei=
Land
Fluß
2.txt-Datei=
Hund
Katze
Ziel ist es:
1.Ordner
txt-Datei Inhalt=
Stadt
Land
Fluß
2. Ordner
1.txt-Datei=
Stadt
Land
Fluß
2.txt-Datei=
Stadt
Hund
Katze
Ich hoffe ihr könnt mir diesesmal auch wieder weiterhelfen.
Vielen Dank.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 356777
Url: https://administrator.de/forum/powershell-das-erste-wort-einer-txt-datei-in-zwei-weiteren-txt-dateien-an-erster-stelle-kopieren-356777.html
Ausgedruckt am: 06.04.2025 um 01:04 Uhr
6 Kommentare
Neuester Kommentar
Servus @Frank2017,
Wenn du mit Wort = Zeile meinst dann:
Sollten mehrere Wörter nebeneinander in der ersten Zeile stehen und du brauchst wirklich nur das erste Wort der Zeile dann Zeile 4 oben ändern in
Grüße Uwe
Wenn du mit Wort = Zeile meinst dann:
$file1 = 'D:\original.txt'
$folder = 'D:\OrdnerX'
# Erste Zeile der Datei auslesen
$line1 = gc $file1 -TotalCount 1
# Alle Textdateien des Ordners verarbeiten
gci $folder -File -Filter *.txt | %{
# prepend der Zeile an den Inhalt der Datei
@($line1,(gc $_.Fullname -ReadCount 1000)) | sc $_.Fullname
}
$line1 = @((gc $file1 -TotalCount 1) -split '\s+')
Hallo!
die Logik, die du brauchst sieht in etwa so aus:
Du liest alle drei Dateien in einen String ein. Für die Quelldatei trennst du den String an „Leerzeichen“ auf, um das erste Wort zu bekommen. Anschließend stellst du das erste Wort aus der Quelldatei dem Inhalt der anderen beiden Dateien voran.
Viele Grüße!
die Logik, die du brauchst sieht in etwa so aus:
#Original .txt Datei einlesen
$RootFile = Get-Content -Path Ordner1\1.txt
#Datei 1 aus Ordner 2 einlesen
$File1 = Get-Content -Path Ordner2\1.txt
#Datei 2 aus Ordner 2 einlesen
$File2 = Get-Content -Path Ordner2\2.txt
#Den Inhalt an jedem "Leerzeichen" trennen
$RootFile = $RootFile -split "\s+"
#Das erste Element aus $RootFile vorne an den eingelesenen String aus $File1 bzw. $File2
#anfügen und wieder in die Datei schreiben
($RootFile + $File1) | Out-File -FilePath Ordner2\1.txt
($RootFile + $File2) | Out-File -FilePath Ordner2\2.txt
Du liest alle drei Dateien in einen String ein. Für die Quelldatei trennst du den String an „Leerzeichen“ auf, um das erste Wort zu bekommen. Anschließend stellst du das erste Wort aus der Quelldatei dem Inhalt der anderen beiden Dateien voran.
Viele Grüße!
Zitat von @Frank2017:
Lasse ich es aber ein zweites mal durchlaufen, da schreibt er das erste Wort nochmal rein.
Anforderung stand ja nicht da Lasse ich es aber ein zweites mal durchlaufen, da schreibt er das erste Wort nochmal rein.
Kann man das noch verhindern? Dann wäre es perfekt!!
Klar, kein Problem:$file1 = 'D:\original.txt'
$folder = 'D:\OrdnerX'
# Erste Zeile der Datei auslesen
$line1 = gc $file1 -TotalCount 1
# Alle Textdateien des Ordners verarbeiten
gci $folder -File -Filter *.txt | ?{(gc $_.Fullname) -notcontains $line1} | %{
@($line1,(gc $_.Fullname -ReadCount 1000)) | sc $_.Fullname
}