Zwei CSV-Dateien vergleichen und Spalte mit übernehmen
Hallo zusammen,
ich steh vor folgender Herausforderung für ein Powershell-Script:
Es gibt zwei CSV-Dateien:
Bestand_Alt.csv
Bestand_Neu.csv
(Jeweils mit Kopfzeile: Artikelnummer, Bestand)
Diese beiden CSV-Dateien möchte ich nun vergleichen. Alle Spalten mit der Kopfüberschrift "BESTAND" sollen verglichen werden und nur geänderte Datensätze sollen in eine neue CSV-Datei geschrieben werden. Das bekomme ich soweit noch hin - aber der Knackpunkt ist: Ich möchte aus der "Bestand_Alt.csv" die Spalte "BESTAND" in die neue Datei übernehmen damit ich die Datensätze vergleichen kann.
Sprich aus Besatnd_Alt.csv und Bestand_Neu.csv wird Vergleich.csv und diese soll folgende Spalten haben:
Artikelnummer, Bestand_Alt, Bestand_Neu
Ist soetwas über Powershell möglich?
Vielen Dank im Voraus.
ich steh vor folgender Herausforderung für ein Powershell-Script:
Es gibt zwei CSV-Dateien:
Bestand_Alt.csv
Bestand_Neu.csv
(Jeweils mit Kopfzeile: Artikelnummer, Bestand)
Diese beiden CSV-Dateien möchte ich nun vergleichen. Alle Spalten mit der Kopfüberschrift "BESTAND" sollen verglichen werden und nur geänderte Datensätze sollen in eine neue CSV-Datei geschrieben werden. Das bekomme ich soweit noch hin - aber der Knackpunkt ist: Ich möchte aus der "Bestand_Alt.csv" die Spalte "BESTAND" in die neue Datei übernehmen damit ich die Datensätze vergleichen kann.
Sprich aus Besatnd_Alt.csv und Bestand_Neu.csv wird Vergleich.csv und diese soll folgende Spalten haben:
Artikelnummer, Bestand_Alt, Bestand_Neu
Ist soetwas über Powershell möglich?
Vielen Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 380470
Url: https://administrator.de/contentid/380470
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
6 Kommentare
Neuester Kommentar
Servus.
(Delimiter und Pfade anpassen.)
Grüße Uwe
Ist soetwas über Powershell möglich?
Wäre ein Wunder wenn nicht . kein Thema:(Delimiter und Pfade anpassen.)
$old = Import-CSV 'D:\alt.csv' -Delimiter ";"
$new = Import-CSV 'D:\neu.csv' -Delimiter ";"
compare-object $old $new -Prop Artikelnummer,Bestand -Passthru | group Artikelnummer | select @{n='Artikelnummer';e={$_.Name}},@{n='Bestand_Alt';e={($_.Group | ?{$_.SideIndicator -eq '<='}).Bestand}}, @{n='Bestand_Neu';e={($_.Group | ?{$_.SideIndicator -eq '=>'}).Bestand}} | export-csv 'D:\Vergleich.csv' -NoType -delimiter ";" -Encoding UTF8
Ausnahmsweise
$old = Import-CSV 'D:\alt.csv' -Delimiter ";"
$new = Import-CSV 'D:\neu.csv' -Delimiter ";"
$changed = compare-object $old $new -Prop Artikelnummer,Bestand -Passthru
$changed | ?{$_.SideIndicator -eq '=>'} | select *,@{n='Bestand_Alt';e={$an = $_.Artikelnummer;($changed | ?{$_.Artikelnummer -eq $an -and $_.SideIndicator -eq '<='}| %{$_.Bestand})}} -Exclude SideIndicator | export-csv 'D:\Vergleich.csv' -NoType -delimiter ";" -Encoding UTF8