Powershell: Automatische Datensatzverteilung in einzelne Dateien - Verzeichnisse
Hallo,
ich (PS-Anfänger) suche gerade einen gangbaren Weg, um einzelne Datensätze zunächst aus einer Gesamtdatei (eingabe.txt) auszulesen.
Diese Datensätze sollten dann anhand einer Zuordnungstabelle (verz_zuord.txt) zusammengefasst und jeweils als Datei in bestimmte Verzeichnisse aus der Zuordnungstabelle (z.B. 01, 02, 03, 04) abgelegt werden.
Beispiel:
Gesamtdatei: C:\temp\eingabe.txt
Inhalt:
Zuordnungsdatei: C:\temp\verz_zuord.txt (die 2-Zeichen nach dem Semikolon geben das Zielverzeichnis an)
Inhalt:
Die erzeugten Ausgabedateien aus dem o.a. Beispiel sollen den folgenden Inhalt ausweisen:
C:\temp\01\ausgabe.txt
Inhalt:
C:\temp\02\ausgabe.txt
Inhalt:
C:\temp\04\ausgabe.txt
Inhalt:
Vielleicht hat ja jemand einen Lösungsansatz für mich.... Wäre schön...
Schon mal, vielen Dank...
Markus
ich (PS-Anfänger) suche gerade einen gangbaren Weg, um einzelne Datensätze zunächst aus einer Gesamtdatei (eingabe.txt) auszulesen.
Diese Datensätze sollten dann anhand einer Zuordnungstabelle (verz_zuord.txt) zusammengefasst und jeweils als Datei in bestimmte Verzeichnisse aus der Zuordnungstabelle (z.B. 01, 02, 03, 04) abgelegt werden.
Beispiel:
Gesamtdatei: C:\temp\eingabe.txt
Inhalt:
12345 TEST-M
12345 TEST-Mo
32450 TEST-U
12548 TEST-Uh
22360 TEST-Mo
32990 TEST-XX
Zuordnungsdatei: C:\temp\verz_zuord.txt (die 2-Zeichen nach dem Semikolon geben das Zielverzeichnis an)
Inhalt:
12345 ;01
42347 ;01
12548 ;02
32450 ;02
12351 ;03
22360 ;04
32990 ;04
Die erzeugten Ausgabedateien aus dem o.a. Beispiel sollen den folgenden Inhalt ausweisen:
C:\temp\01\ausgabe.txt
Inhalt:
12345 TEST-M
12345 TEST-Mo
C:\temp\02\ausgabe.txt
Inhalt:
32450 TEST-U
12548 TEST-Uh
C:\temp\04\ausgabe.txt
Inhalt:
22360 TEST-Mo
32990 TEST-XX
Vielleicht hat ja jemand einen Lösungsansatz für mich.... Wäre schön...
Schon mal, vielen Dank...
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4709258675
Url: https://administrator.de/contentid/4709258675
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
$inputfile = "C:\temp\eingabe.txt"
$mappingfile = "c:\temp\verz_zuord.txt"
$outputdir = "C:\temp"
$mapping = Import-CSV $mappingfile -Delimiter ";" -Header 'Number','Folder'
foreach($line in Get-Content $inputfile){
$folder = ($mapping | ?{$_.Number -eq $line.split(" ")}).Folder
if ($folder){
md "$outputdir\$folder" -Force | out-null
$line | out-file "$outputdir\$folder\ausgabe.txt" -Append
}
}
Es kann auch sein, dass dieselbe Nummer in mehrere Verzeichnisse verteilt/ gematched werden muss.
Kein Thema baust du halt einfach noch ne Schleife dran$inputfile = "C:\temp\eingabe.txt"
$mappingfile = "c:\temp\verz_zuord.txt"
$outputdir = "C:\temp"
$mapping = Import-CSV $mappingfile -Delimiter ";" -Header 'Number','Folder'
foreach($line in Get-Content $inputfile){
$mapping | ?{$_.Number -eq $line.split(" ")} | %{
md "$outputdir\$($_.Folder)" -Force | out-null
$line | out-file "$outputdir\$($_.Folder)\ausgabe.txt" -Append
}
}