Frage von cwendel, 17

Batch: CSV per CSV durchsuchen geht nicht?

Hallo Leute Ich habe folgendes Problem

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

Das Batch Script durchsucht die CSV und speichert alle Zeilen in denen nicht 4056204302446 vorkommt.

Nun soll es aber umgedreht sein! In der Datei sollen nachher nur noch die Zeilen stehen die 4056204302446 enthalten! Den Wert 4056204302446 würde ich dabei gern in einer weiteren CSV speichern können (also eine durchsuchen csv).

Eigentlich soll er die fertig.csv durchsuchen mit der werte.csv und immer wenn der Wert vorkommt die Zeile in eine neue Datei schreiben.

Antwort
von MarkusGenervt, 4

Der allereinfachste Weg wäre:

    Lass einfach das "/v" weg.

Schau Dir mal die Optionen des FINDSTR-Befehls in Deiner Windows-Version an:

FINDSTR /?

––––––––––––––––––––––––––––––––––––––––––––––––––

Ich möchte aber auch mal den Vorschlag von BlvckBytes aufgreifen:

VBScript bietet sehr viel mehr Möglichkeiten, erfordert aber dafür etwas mehr Quellcode.

Du kannst damit die CSV-Datei direkt öffnen und Zeilenweise auslesen. Hinzu kommt, dass Du für komplexere Abfragen u.a. auch RegExp-Ausdrücke verwenden kannst.

So mal so ein Code-Beispiel:

Option Explicit

Const fnIn = "fertig.csv"
Const fnOut = "gefiltert.csv"
Const SearchString = "4056204302446"Dim fso, tsIn, tsOut, line

Set fso = CreateObject("Scripting.FileSystemObject")
Set tsIn = fso.OpenTextFile(fnIn, ReadMode, False)Set tsOut = fso.OpenTextFile(fnOut, WriteMode, True)

Do While Not tsIn.AtEndOfStream
line = tsIn.ReadLine
If InStr(1, line, SearchString) Then
tsOut.WriteLine line
End If
Loop

tsIn.Close
tsOut.Close

Anstatt einer einfachen Text-Positions-Abfrage (InStr) kannst Du hier dann auch ein RegEx-Objekt benutzen.

Das kannst Du dann auch mit einem DirDiver-Algorithmus erweitern.

Antwort
von BlvckBytes, 11

Warum machst du das mit Batch und nicht mit einer Höheren Sprache? 

LG BlvckBytes

Kommentar von cwendel ,

was meinst du mit höhere Sprache. Welche es ist mir erstmal egal. Ich habe alles bis jetzt immer mit Batch gemacht. Wenn es mit der Shell geht auch gut. Ich habe da kaum Ahnung und suche es mir eher zusammen.

Kannst du mir helfen?

Keine passende Antwort gefunden?

Fragen Sie die Community