Batch: CSV Liste mit CSV Liste abgleichen
Hallo ich bin neu hier und habe ein Problem.
Ich habe mir vor Jahren mal ein Batch Script zusammengebastelt um eine .csv Liste (alledaten.csv) nach Werten (vorhanden.csv) durchsuchen zu lassen und jede gefundene Zeile in eine andere Liste (fertig.csv) zu schreiben.
Nun habe ich das Problem das in der Uhrsprungsliste (alledaten.csv) die gesuchten Daten teilweise häufiger vorkommen. In der fertigen Liste (fertig.csv) soll aber immer nur der 1. Fund auftauchen.
In der vorhanden.csv stehen nur Zeile für Zeile die EAN Nummern
In der alledaten.csv stehen 5 Spalten mit Daten gefolgt von der EAN Spalte und 3 weiteren Spalten.
In der fertig.csv soll am Ende jeweils die 1. komplette Zeile (der vorhanden.csv) stehen wenn eine EAN aus vorhanden.csv auftauch.
Leider bekomme ich es alleine absolut nicht hin.
Ich habe mir vor Jahren mal ein Batch Script zusammengebastelt um eine .csv Liste (alledaten.csv) nach Werten (vorhanden.csv) durchsuchen zu lassen und jede gefundene Zeile in eine andere Liste (fertig.csv) zu schreiben.
Nun habe ich das Problem das in der Uhrsprungsliste (alledaten.csv) die gesuchten Daten teilweise häufiger vorkommen. In der fertigen Liste (fertig.csv) soll aber immer nur der 1. Fund auftauchen.
findstr /ig:"c:\daten\vorhanden.csv" "c:\daten\alledaten.csv" >"c:\daten\fertig.csv"
In der vorhanden.csv stehen nur Zeile für Zeile die EAN Nummern
In der alledaten.csv stehen 5 Spalten mit Daten gefolgt von der EAN Spalte und 3 weiteren Spalten.
In der fertig.csv soll am Ende jeweils die 1. komplette Zeile (der vorhanden.csv) stehen wenn eine EAN aus vorhanden.csv auftauch.
Leider bekomme ich es alleine absolut nicht hin.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 498642
Url: https://administrator.de/forum/batch-csv-liste-mit-csv-liste-abgleichen-498642.html
Ausgedruckt am: 11.04.2025 um 17:04 Uhr
5 Kommentare
Neuester Kommentar
Moin,
ich muss gleich los. Deshalb erstmal nur der Hinweis: Nimm die Powershell. Die hat eigene Befehle für die Behandlung der CSVs, die einem das Leben erheblich erleichtern. Guckst Du zum Einlesen hier: https://www.msxfaq.de/code/powershell/pscsv.htm
Vor Kurzem gab es mal einen ähnlichen Thread, in dem ich eine ungeteste Lösung gepostet habe. Vielleicht hilft die ja.
Excel - Nummer Suchen in CSV und ganze Zeile in neue Datei kopieren
Liebe Grüße
Erik
ich muss gleich los. Deshalb erstmal nur der Hinweis: Nimm die Powershell. Die hat eigene Befehle für die Behandlung der CSVs, die einem das Leben erheblich erleichtern. Guckst Du zum Einlesen hier: https://www.msxfaq.de/code/powershell/pscsv.htm
Vor Kurzem gab es mal einen ähnlichen Thread, in dem ich eine ungeteste Lösung gepostet habe. Vielleicht hilft die ja.
Excel - Nummer Suchen in CSV und ganze Zeile in neue Datei kopieren
Liebe Grüße
Erik

Mach es direkt mit der PS
Ausgangslage:
alledaten.csv
vorhanden.csv
Script
Ergebnis
, der ist sinnlos, hast wohl deine eigenen Bezeichnungen verwechselt.
Ausgangslage:
alledaten.csv
EAN;Spalte2;Spalte3
100;cc;cc
200;dd;dd
300;ee;ee
vorhanden.csv
EAN
100
300
Script
$csv1 = Import-CSV 'C:\daten\alledaten.csv' -Delimiter ";"
$csv2 = Import-CSV 'C:\daten\vorhanden.csv' -Delimiter ";"
Compare $csv1 $csv2 -Property EAN -IncludeEqual -ExcludeDifferent -PassThru | select * -ExcludeProperty SideIndicator | export-csv 'C:\daten\fertig.txt' -Delimiter ";" -NoType
Ergebnis
EAN;Spalte2;Spalte3
100;cc;cc
300;ee;ee
In der fertig.csv soll am Ende jeweils die 1. komplette Zeile (der vorhanden.csv) stehen wenn eine EAN aus vorhanden.csv auftauch.
Den Satz lese dir nochmal selbst durch 
Kein Problem
Das nächste mal bitte gleich im Ursprungspost alle Details nennen, wir können von hier aus nicht in deine Birne sehen!
$csv1 = Import-CSV 'C:\daten\alledaten.csv' -Delimiter ";" | Select *,@{n='EAN';e={$_.6}}
$csv2 = Import-CSV 'C:\daten\vorhanden.csv' -Delimiter ";" | Select *,@{n='EAN';e={$_.1}}
Compare $csv1 $csv2 -Property EAN -IncludeEqual -ExcludeDifferent -PassThru | select * -ExcludeProperty SideIndicator,EAN | export-csv 'C:\daten\fertig.csv' -Delimiter ";" -NoType -Encoding UTF8
Das nächste mal bitte gleich im Ursprungspost alle Details nennen, wir können von hier aus nicht in deine Birne sehen!