jocheng
Goto Top

CSV nach CSV durchsuchen und speichern

Hallo Leute ich fuchtel wieder an einem CSV Problem.

Ich habe eine CSV mit Werten die ich nach einer anderen CSV durchsuchen will und immer wenn der Wert aus der search.csv vorkommt in einer neuen Datei gespeichert haben will.

Alles was ich hinbekommen ist aber die CSV (anfang.csv) zu durchsuchen und wennn der Wert vorkommt diesen auszulassen.

set "quellordner=K:\CSV"  
set "zielordner=K:\CSV\ende"  
pushd "%quellordner%"  
for /f "delims=" %%i in ('dir /b /a-d anfang.csv') do findstr /v "4056204302446" "%%i">"%zielordner%\%%i"  
popd

4056204302446 steht testweise für die Werte nach denen gesucht werden soll (search.csv)

Aufbau der Anfang.csv
1;201620;21002;0001;OSFA;4056204301432;in_stock;;2029;1;0;Y;N
1;201620;21002;0002;OSFA;4056204301418;in_stock;;1513;1;0;Y;N
1;201620;21002;0003;OSFA;4056204301425;in_stock;;2489;1;0;Y;N
1;201620;21002;0006;OSFA;4056204301388;in_stock;;1543;1;0;Y;N
1;201620;21003;0002;OSFA;4056204301265;in_stock;;0;1;0;Y;N
1;201620;21003;0003;OSFA;4056204301289;in_stock;;0;1;0;Y;N
1;201620;21006;0001;OSFA;4056204302446;in_stock;;129;1;0;Y;N
1;201620;21007;0001;OSFA;4056204302255;in_stock;;8;1;0;Y;N
1;201620;21007;0002;OSFA;4056204302248;in_stock;;492;1;0;Y;N
1;201620;21017;0003;OSFA;4056204300695;in_stock;;0;1;0;Y;N
1;201620;21018;0001;OSFA;4056204301319;in_stock;;1073;1;0;Y;N
1;201620;21018;0003;OSFA;4056204301302;in_stock;;426;1;0;Y;N
1;201620;21019;0001;ADULT;4056204301593;in_stock;;0;1;0;Y;N
1;201620;21019;0002;ADULT;4056204301579;in_stock;;0;1;0;Y;N
1;201620;21019;0003;ADULT;4056205785217;in_stock;;25;1;0;Y;N
1;201620;21020;0001;ADULT;4056204301869;in_stock;;0;1;0;Y;N

Aufbau der search.csv
4056204302446

Content-ID: 318062

Url: https://administrator.de/contentid/318062

Ausgedruckt am: 26.11.2024 um 04:11 Uhr

131026
131026 17.10.2016 aktualisiert um 09:15:23 Uhr
Goto Top
Gibt's hier schon Unmengen an Beiträgen die selbst ich als Neuling in diesem Forum finde ...
Hier scheint echt niemand die Suche zu benutzen.
set "quellordner=K:\CSV"  
set "zielordner=K:\CSV\ende"  
pushd "%quellordner%"  
findstr /ig:"search.txt" "anfang.csv" >"%Zielordner%\ergebnis.txt"  
2 CSV Dateien per Powershell vergleichen

R.
jocheng
jocheng 17.10.2016 um 18:15:01 Uhr
Goto Top
Das klappt super wenn in der search.csv nur ein nur ein paar nummern stehen. Wenn ich da aber ein paar 10.000 reinpacke bekomme ich die gleiche Liste einfach nochmal.

Die anfang.csv ist 44000 Zeilen groß und die search.csv gut 30.000. Gibt es da irgendwelche maximalwerte???
131026
131026 17.10.2016, aktualisiert am 18.10.2016 um 08:20:58 Uhr
Goto Top
Zitat von @jocheng:
Die anfang.csv ist 44000 Zeilen groß und die search.csv gut 30.000. Gibt es da irgendwelche maximalwerte???
Da wird die max Batch Zeilenlänge eine Rolle spielen.

Nimm Powershell, das hat damit kein Problem. Batch ist sowieso langsam aber sicher etwas für den Dachboden.

$search = gc "K:\CSV\search.csv" -join '|'  
$csv = gc "K:\CSV\Anfang.csv"  
$csv | ?{$_ -match $search} | set-content "K:\CSV\Ende\ergebnis.csv"  
jocheng
jocheng 17.10.2016 um 18:52:02 Uhr
Goto Top
es ging auch mit dem Batch. Das Problem war ein anderes :/ in der search.csv hatten die EAN Nummern zum Teil eine Leerzeichen am Ende und eine Zeile war eine 0 :D dann ist klar das alles gefunden wird.
jocheng
jocheng 18.10.2016 um 05:18:51 Uhr
Goto Top
Ich habe jetzt mal das Powershell script ausprobiert das macht einfach garnichts face-sad woran kann das liegen? Kein Fehler nichts
131026
131026 18.10.2016 um 08:21:49 Uhr
Goto Top
Kleine Korrektur.