Dateien vergleichen mit fc - zurückgegebene Zeilenlänge
Hallo,
wir arbeiten mit Windows 7; [64].
Die Hauptanwendung auf dem System ist eine Datenbank (FileMaker).
Begleitende Funktionen - Dateien verschieben, vorbereiten etc. - werden per cmd-Systemscripts ausgeführt.
Es soll möglichst bei cmd bleiben; wenn es irgend geht, wollen wir nicht mit unterschiedlichen Scripts (VB o.ä.) arbeiten.
Eines der cmd-Scripts hat den Job, csv-Dateien miteinander verglichen und abweichende Zeilen zur weiteren Bearbeitung in eine neue txt-Datei zu schreiben. Mit dem Befehl fc funktioniert das auch ziemlich gut - so lange ein Datensatz (eine Textzeile) nicht länger ist als 127 Zeichen. Zeilen, die länger sind, werden umgebrochen. Die Datenbank, die die neuen Werte lesen muss, versteht die neue Zeile natürlich als neuen Datensatz - gar nicht gut!
Ich hoffe, Ihr habt da eine Lösung für mich!
Mit besten Grüssen
Martin
wir arbeiten mit Windows 7; [64].
Die Hauptanwendung auf dem System ist eine Datenbank (FileMaker).
Begleitende Funktionen - Dateien verschieben, vorbereiten etc. - werden per cmd-Systemscripts ausgeführt.
Es soll möglichst bei cmd bleiben; wenn es irgend geht, wollen wir nicht mit unterschiedlichen Scripts (VB o.ä.) arbeiten.
Eines der cmd-Scripts hat den Job, csv-Dateien miteinander verglichen und abweichende Zeilen zur weiteren Bearbeitung in eine neue txt-Datei zu schreiben. Mit dem Befehl fc funktioniert das auch ziemlich gut - so lange ein Datensatz (eine Textzeile) nicht länger ist als 127 Zeichen. Zeilen, die länger sind, werden umgebrochen. Die Datenbank, die die neuen Werte lesen muss, versteht die neue Zeile natürlich als neuen Datensatz - gar nicht gut!
Ich hoffe, Ihr habt da eine Lösung für mich!
Mit besten Grüssen
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 359280
Url: https://administrator.de/forum/dateien-vergleichen-mit-fc-zurueckgegebene-zeilenlaenge-359280.html
Ausgedruckt am: 22.04.2025 um 05:04 Uhr
4 Kommentare
Neuester Kommentar
FC hat diesen Bug und es gibt keine Möglichkeit dieses Tool dazu zu bewegen, im ASCII Modus vernünftig zu agieren. Es bleibt die Möglichkeit Dateien in einer Schleife durchzuackern. Aber auch da wird bei 1021 Zeichen Schluss sein, da parallel mit FOR /F und SET /P gearbeitet werden müsste. Dass solche Workarounds die Performance von FC nicht ansatzweise erreichen können, sollte klar sein. Falls du darauf bestehst, ist das schnell runter geschrieben. Ein paar Testdaten und den erwarteten Output solltest du dann aber zur Verfügung stellen.
Steffen
Steffen
Hallo Martin,
wenn ich dich richtig verstanden habe, geht es gar nicht darum dass in bereits bestehenden Daten Änderungen gemacht werden. Es kommen lediglich neue Datensätze (Zeilen) hinzu, richtig? Falls das so ist, dann ist die Lösung einfacher als gedacht.
Beispiel:
Steffen
wenn ich dich richtig verstanden habe, geht es gar nicht darum dass in bereits bestehenden Daten Änderungen gemacht werden. Es kommen lediglich neue Datensätze (Zeilen) hinzu, richtig? Falls das so ist, dann ist die Lösung einfacher als gedacht.
Beispiel:
@echo off &setlocal
REM Zeilenanzahl der beiden Dateien ermitteln
for /f %%i in ('type "ref.csv"^|find /c /v ""') do set /a "line_cnt_old=%%i"
for /f %%i in ('type "gka.csv"^|find /c /v ""') do set /a "line_cnt_new=%%i"
REM Differenz ermitteln
set /a "line_cnt_diff=line_cnt_new-line_cnt_old"
setlocal EnableDelayedExpansion
<"gka.csv" >"result.txt" (
REM Kopf ...
echo Vergleichen der Dateien blabla
REM Ignoriere die bereits bekannten Zeilen
for /l %%i in (1 1 %line_cnt_old%) do set /p "="
REM Lese und schreibe die hinzugekommenen Zeilen
for /l %%i in (1 1 %line_cnt_diff%) do (
set "ln=" &set /p "ln="
echo(!ln!
)
)
endlocal