Batch-Datei soll Dateien vergleichen und Unterschiedliche in Liste ausgeben
Hallo Gemeinde,
ich habe mehrere Ordner mit gleichen Dateien.
Ich brauche eine Batch-Datei, die mir die dateien vergleicht und
UNGLEICHE in eine Liste schreibt und diese unter z.B. Liste.txt
abspeichert, oder noch besser die die ungleichen Dateien in zwei
neue, separate Ordner speichert.
Schön wäre auch, wenn direkt die Unterschiede zwischen den
Dateien ausgegeben werden könnten (Tabellarisch??).
Die Dateien haben folgende Dateinamen:
T000001.50
T000001.51
T000002.50
T000002.51
T000002.53
usw...
und sehen wie folgt aus:
wäre schön, wenn mir da jemand helfen könnte.
hab nur sehr wenig Erfahrung mit BAT-Dateien.
Grüße
Dominic
ich habe mehrere Ordner mit gleichen Dateien.
Ich brauche eine Batch-Datei, die mir die dateien vergleicht und
UNGLEICHE in eine Liste schreibt und diese unter z.B. Liste.txt
abspeichert, oder noch besser die die ungleichen Dateien in zwei
neue, separate Ordner speichert.
Schön wäre auch, wenn direkt die Unterschiede zwischen den
Dateien ausgegeben werden könnten (Tabellarisch??).
Die Dateien haben folgende Dateinamen:
T000001.50
T000001.51
T000002.50
T000002.51
T000002.53
usw...
und sehen wie folgt aus:
/*Tabelle : T000001.50
/*Version : 1
/*
/*Datum : 02.2d_27_10
/*
/*Änderung auf Version x am xx.xx.xx von xyz :
/*
Offset-Tabelle zum Macro Riegel klinken : M001001
Serie : Fassade FW50/SK60V/FW50+/FW60+
Anzahl Eintraege:4
N1 : 7: Schlichtschritt Unten
N2 : 60: Materialst„rke Unten
N3 : 30: Materialst„rke Seitlich
N4 : 100: Vorschub in Prozent
/*Version : 1
/*
/*Datum : 02.2d_27_10
/*
/*Änderung auf Version x am xx.xx.xx von xyz :
/*
Offset-Tabelle zum Macro Riegel klinken : M001001
Serie : Fassade FW50/SK60V/FW50+/FW60+
Anzahl Eintraege:4
N1 : 7: Schlichtschritt Unten
N2 : 60: Materialst„rke Unten
N3 : 30: Materialst„rke Seitlich
N4 : 100: Vorschub in Prozent
wäre schön, wenn mir da jemand helfen könnte.
hab nur sehr wenig Erfahrung mit BAT-Dateien.
Grüße
Dominic
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 62684
Url: https://administrator.de/forum/batch-datei-soll-dateien-vergleichen-und-unterschiedliche-in-liste-ausgeben-62684.html
Ausgedruckt am: 18.05.2025 um 04:05 Uhr
9 Kommentare
Neuester Kommentar
Hallo DoMann und willkommen im Forum!
Die einfachste Form eines Vergleichs erhältst Du übrigens mit "fc Datei1 Datei2" von der Kommandozeile (wird auch im folgenden Entwurf eingesetzt). Ist zwar nicht besonders übersichtlich, kommt aber auch mit unterschiedlicher Zeilenanzahl ganz gut zurecht ...
Als Batch könnte ein Entwurf (zum Vergleichen gleichnamiger Dateien) so aussehen:
Die beiden Verzeichnisse habe ich zum Testen direkt in den Code geschrieben, später können sie als Startparameter beim Aufruf mitgegeben werden. Die Pfade, auch der Protokolldateien, musst Du natürlich in den "set"-Zeilen anpassen.
[Zusätzlich zur Ausgabe der Fehlermeldung/Differenzen bei Ungleichheit in Protokolldateien lassen sich natürlich die Dateien auch verschieben, allerdings müsstest Du dazu etwas konkretere Angaben machen und Dir insbesondere eine Strategie für den Fall, dass eine gleichnamige Datei bereits im Zielverzeichnis vorhanden ist, überlegen (vorhandene Datei überschreiben, umbenennen, ...)] - bereits umgesetzt
Grüße
bastla
[Edit] Kopieren unterschiedlicher Dateien im Batch integriert. [/Edit]
ich habe mehrere Ordner mit gleichen Dateien.
Miteinander vergleichen wirst Du aber immer nur jeweils 2 Ordner können. Meinst Du übrigens mit "gleich", dass sie gleiche Dateinamen haben?Schön wäre auch, wenn direkt die Unterschiede zwischen den Dateien ausgegeben werden könnten (Tabellarisch??).
Wie "ungleich" können die Dateien werden, oder anders formuliert: Bleibt die Struktur des Inhalts gleich, sodass ein zeilenweiser Vergleich sinnvoll ist, oder können in einer Datei auch mehr oder weniger Zeilen enthalten sein (wobei aber zumindest die Reihenfolge der Zeilen gleich ist)?Die einfachste Form eines Vergleichs erhältst Du übrigens mit "fc Datei1 Datei2" von der Kommandozeile (wird auch im folgenden Entwurf eingesetzt). Ist zwar nicht besonders übersichtlich, kommt aber auch mit unterschiedlicher Zeilenanzahl ganz gut zurecht ...
Als Batch könnte ein Entwurf (zum Vergleichen gleichnamiger Dateien) so aussehen:
@echo off & setlocal
set "Verzeichnis1=D:\Testdaten"
set "Verzeichnis2=D:\Vergleichsdaten"
set "Fehler=D:\Fehler.txt"
set "Diff=D:\Differenzen.txt"
set "Diff1=D:\Diff1"
set "Diff2=D:\Diff2"
if exist "%Fehler%" del "%Fehler%"
if exist "%Diff%" del "%Diff%"
if not exist "%Diff1%" md "%Diff1%"
if not exist "%Diff2%" md "%Diff2%"
for %%i in ("%Verzeichnis1%\*.*") do call :ProcessFile "%%i"
if exist "%Fehler%" cls & type "%Fehler%" & pause
if exist "%Diff%" notepad "%Diff%"
goto :eof
:ProcessFile
if not exist "%Verzeichnis2%\%~nx1" (echo Nicht vorhanden: %Verzeichnis2%\%~nx1>>"%Fehler%") & goto :eof
fc "%~f1" "%Verzeichnis2%\%~nx1">nul && goto :eof
echo Unterschiedlich: %Verzeichnis2%\%~nx1>>"%Fehler%"
copy /y %1 "%Diff1%">nul
copy /y "%Verzeichnis2%\%~nx1" "%Diff2%">nul
echo ##############################################################################>>"%Diff%"
fc /n "%~f1" "%Verzeichnis2%\%~nx1">>"%Diff%"
echo ##############################################################################>>"%Diff%"
echo.>>"%Diff%"
echo.>>"%Diff%"
[Zusätzlich zur Ausgabe der Fehlermeldung/Differenzen bei Ungleichheit in Protokolldateien lassen sich natürlich die Dateien auch verschieben, allerdings müsstest Du dazu etwas konkretere Angaben machen und Dir insbesondere eine Strategie für den Fall, dass eine gleichnamige Datei bereits im Zielverzeichnis vorhanden ist, überlegen (vorhandene Datei überschreiben, umbenennen, ...)] - bereits umgesetzt
Grüße
bastla
[Edit] Kopieren unterschiedlicher Dateien im Batch integriert. [/Edit]
Moin DoMann,
Sagen wir so - dass Du die zwei Buchstaben "fc" falsch schreibst - das möchte und werde ich Dir nicht öffentlich unterstellen.
Also wird der zweite Teil der möglichen Ursachenbeschreibung zutreffen.: Fc.exe kann nicht gefunden werden.
Das ist zwar ungewöhnlich, aber nicht ausgeschlossen.
Bitte führe mal vom CMD-Prompt drei Befehle durch
Danke
Biber
Der Befehl fc ist entweder falsch geschrieben oder konnte nicht gefunden werden
woran kann das liegen???
Hmmm... schwierige Frage...*gworan kann das liegen???
Sagen wir so - dass Du die zwei Buchstaben "fc" falsch schreibst - das möchte und werde ich Dir nicht öffentlich unterstellen.
Also wird der zweite Teil der möglichen Ursachenbeschreibung zutreffen.: Fc.exe kann nicht gefunden werden.
Das ist zwar ungewöhnlich, aber nicht ausgeschlossen.
Bitte führe mal vom CMD-Prompt drei Befehle durch
ver
dir %windir%\fc.* /b /s
path
...und poste bitte das Ergebnis.dir %windir%\fc.* /b /s
path
Danke
Biber
Moin DoMann,
danke für die Rückmeldung.
Die Ausgaben:
a) ver - ist ok
b) ist auch wie erwartet- fc.exe ist dort, wo es zu erwarten war
...ergo muss der Suchpfad %PATH% marode sein...
Auffällig am angezeigten %PATH% bei Dir ist, dass eigentlich die Variable %SystemRoot% hätte aufgelöst sein müssen (d.h. dort sollte "c:\windows\system32" stehen und nicht "%SystemRoot%\system32" etc.).
[Außerdem fehlt ein Backslash bei "C:\Programme--hier:\--->SCHUECO_CAM\List&Label;" ...aber der hat nix mit dem fc.exe zu tun]
Da hat irgendein stümperhaft geschriebenes Inst-Prog (evtl aus dem Hause M$??) in der Registry Variablenwerte vom Typ REG_EXPAND_SZ als REG_SZ angelegt... egal.
Reparaturmöglichkeit:
Rufe "Start"->"Systemsteuerung"->"System" auf, dann "Erweitert"->"Umgebungsvariablen"
Bearbeite die Variablen PATH unter System und falls vorhanden unter Benutzer.
Ersetze alle Strings %SystemRoot% durch c:\Windows.
Und neuer Versuch.
Gruß
Biber
danke für die Rückmeldung.
Die Ausgaben:
a) ver - ist ok
b) ist auch wie erwartet- fc.exe ist dort, wo es zu erwarten war
...ergo muss der Suchpfad %PATH% marode sein...
Auffällig am angezeigten %PATH% bei Dir ist, dass eigentlich die Variable %SystemRoot% hätte aufgelöst sein müssen (d.h. dort sollte "c:\windows\system32" stehen und nicht "%SystemRoot%\system32" etc.).
[Außerdem fehlt ein Backslash bei "C:\Programme--hier:\--->SCHUECO_CAM\List&Label;" ...aber der hat nix mit dem fc.exe zu tun]
Da hat irgendein stümperhaft geschriebenes Inst-Prog (evtl aus dem Hause M$??) in der Registry Variablenwerte vom Typ REG_EXPAND_SZ als REG_SZ angelegt... egal.
Reparaturmöglichkeit:
Rufe "Start"->"Systemsteuerung"->"System" auf, dann "Erweitert"->"Umgebungsvariablen"
Bearbeite die Variablen PATH unter System und falls vorhanden unter Benutzer.
Ersetze alle Strings %SystemRoot% durch c:\Windows.
Und neuer Versuch.
Gruß
Biber
Moin DoMann,
gern geschehen bis hierhin.... und bei Bedarf auch gerne weiter.
Dennoch hätte ich, wenn Du da jetzt mit diesem etwas spezielleren 3-Ordner-Problem erstmal am Basteln bist, die Bitte, dass wir diese Frage hier auf "gelöst"/"geschlossen" setzen.
Danach hättest Du dann die Optionen, dass Du
Grüße
Biber
gern geschehen bis hierhin.... und bei Bedarf auch gerne weiter.
Dennoch hätte ich, wenn Du da jetzt mit diesem etwas spezielleren 3-Ordner-Problem erstmal am Basteln bist, die Bitte, dass wir diese Frage hier auf "gelöst"/"geschlossen" setzen.
Danach hättest Du dann die Optionen, dass Du
- bei Problemen schon ein konkretes Skriptchen für einen neuen Beitrag vorliegen hast, an dem wir gemeinsam weiterbasteln können
- oder aber Du beißt Dich da alleine durch und kannst dann erschöpt, aber glücklich Dein erstes Tutorial/Deine erste Musterlösung hier posten kannst ;.)
Grüße
Biber