Batch für CSV Zusammenfassung
Guten Tag kurz vor Ostern,
Gibt es eine Möglichkeit ggf. mit einem Code-Schnippsel aus Powershell Werte aus einer CSV Datei zusammenzufassen, wenn der Wert in der 1. Spalte immer gleich ist? Sprich immer den Wert aus der letzten Spalte zusammenfassen. Die Anzahl der gleichen Datensätze ist auf max 20 Datensätze pro gleichem Wert begrenzt.
Quell CSV Datei:
Ziel CSV Datei:
Liebe Ostergrüße!
Gibt es eine Möglichkeit ggf. mit einem Code-Schnippsel aus Powershell Werte aus einer CSV Datei zusammenzufassen, wenn der Wert in der 1. Spalte immer gleich ist? Sprich immer den Wert aus der letzten Spalte zusammenfassen. Die Anzahl der gleichen Datensätze ist auf max 20 Datensätze pro gleichem Wert begrenzt.
Quell CSV Datei:
TEST;1234;5456151321321;
TEST;1234;3456151321321;
TEST;1234;3456151321321;
TEST1;1234;5456151321321;
TEST1;1234;3456151321321;
TEST1;1234;3456151321321;
Ziel CSV Datei:
TEST;WAHR;5456151321321;3456151321321;3456151321321;;;;;;;;;;;;;;;;;;
TEST1;WAHR;5456151321321;3456151321321;3456151321321;;;;;;;;;;;;;;;;;;
Liebe Ostergrüße!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665324
Url: https://administrator.de/contentid/665324
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Schöne Ostergrüße zurück.
Gruß Thomas
$Source = 'C:\Test\File.CSV'
$CSV = Import-CSV -Path $Source -d ';' -Header (1..3)
Foreach ($Obj in ($CSV.1|Select -unique)) {
[Array]$Out += "{0};WAHR;{1}" -f $Obj,(($CSV | Where-Object 1 -eq $Obj).3 -Join ';')
}
$Out | Set-Content -Enc utf8 "C:\Test\NewFile.csv"
Schöne Ostergrüße zurück.
Gruß Thomas
Zitat von @freshman2017:
NewFile.csv
Wieso hast du so viele Zeilen? Wenn ich das mit deiner file.csv ausführe, bekomme ich nurNewFile.csv
TEST;WAHR;5456151321321;3456151321321;3456151321321
TEST1;WAHR;5456151321321;3456151321321;3456151321321
TEST;WAHR;5456151321321;3456151321321;3456151321321
TEST1;WAHR;5456151321321;3456151321321;3456151321321
TEST;WAHR;5456151321321;3456151321321;3456151321321
TEST1;WAHR;5456151321321;3456151321321;3456151321321
TEST;WAHR;5456151321321;3456151321321;3456151321321
TEST1;WAHR;5456151321321;3456151321321;3456151321321
TEST;WAHR;5456151321321;3456151321321;3456151321321
TEST1;WAHR;5456151321321;3456151321321;3456151321321
...
TEST;WAHR;5456151321321;3456151321321;3456151321321
TEST1;WAHR;5456151321321;3456151321321;3456151321321
Das könnte man z.B. ganz leicht erreichen, indem man den Output nochmal durch den CSV-Converter jagt:
tio.run
$Out | ConvertFrom-CSV -d ';' -Header (1..22) | ConvertTo-CSV -d ';' -NoTypeInfo | Select -skip 1 | Set-Content "C:\Test\NewFile.CSV"
Ich würde es gleich mit Group-Object abfackeln 😉
https://tio.run/##lY5NC4JAEIbv/opBDDVccV3tsgSG9HHqkFLHkNy@UFdWrcPmbzelSw ...
Da der Jung das wohl wieder als Batch/Powershell Mischmasch haben will hier der Batch-Einzeiler dazu
Gruß w.
https://tio.run/##lY5NC4JAEIbv/opBDDVccV3tsgSG9HHqkFLHkNy@UFdWrcPmbzelSw ...
Da der Jung das wohl wieder als Batch/Powershell Mischmasch haben will hier der Batch-Einzeiler dazu
@echo off
powershell -EP Bypass -C "Import-CSV 'D:\datei.csv' -d ';' -Head (1..3) | group '1' | %%{'{0};WAHR;{1}{2}' -f $_.Name,($_.Group.3 -join ';'),(';'*(20 - $_.Count))}"
Gruß w.