Supportnet / Forum / BS-Sonstige
Dateien Vergleichen und nur unterschiede in eine 3 Datei
Frage
Hallo,
wie kann man mit Dos-mitteln 2 Dateien vergleichen
und nur die Unterschiede in eine dritte Datei schreiben.
Also:
1.Datei
a
b
c
2.Datei
a
c
e
f
Ergebnis 3.Datei
e
f
(ohne b)
ich bedanke mich für jeden Hinweis
Antwort 1 von manei
Hallo,
einen Vergleich von 2 Dateien kannst Du mit fc Datei1 Datei2 durchführen; fc /? an der Eingabeaufforderung zeigt Dir Einzelheiten.
Aber so wie ich das sehe, willst du nicht 2 Dateien vergleichen, sondern nur das herausfiltern, was in Datei2 steht aber nicht in Datei1. Dazu ist fc nicht geeignet.
Dazu mußt du Datei2 zeilenweise abarbeiten und jede Zeile dieser Datei in eine Variable setzen und mit Datei1 überprüfen, ob diese Zeile enthalten ist.
Um Datei2 zeilenweise abzuarbeiten benötigst Du einen Zähler. Das überprüfen kannst du dann z.B. mit type datei1| find "Zeile aus datei2">nul
if errorlevel 1 "Zeile aus Datei2">Datei3 durchführen.
Das ist jetzt nur ein grober Überblick da das Handling je nach System (WinNT/XP/W2K oder Win95/98/ME) unterschiedlich ist.
WinNT/XP/W2K bringt dazu alles notwendige mit, bei den Win9X Systemen läßt sich dies am einfachsten mit 2 Freewaretools (varset und lmod von http://home.mnet-online.de/horst.muc) erledigen.
MfG maneich
einen Vergleich von 2 Dateien kannst Du mit fc Datei1 Datei2 durchführen; fc /? an der Eingabeaufforderung zeigt Dir Einzelheiten.
Aber so wie ich das sehe, willst du nicht 2 Dateien vergleichen, sondern nur das herausfiltern, was in Datei2 steht aber nicht in Datei1. Dazu ist fc nicht geeignet.
Dazu mußt du Datei2 zeilenweise abarbeiten und jede Zeile dieser Datei in eine Variable setzen und mit Datei1 überprüfen, ob diese Zeile enthalten ist.
Um Datei2 zeilenweise abzuarbeiten benötigst Du einen Zähler. Das überprüfen kannst du dann z.B. mit type datei1| find "Zeile aus datei2">nul
if errorlevel 1 "Zeile aus Datei2">Datei3 durchführen.
Das ist jetzt nur ein grober Überblick da das Handling je nach System (WinNT/XP/W2K oder Win95/98/ME) unterschiedlich ist.
WinNT/XP/W2K bringt dazu alles notwendige mit, bei den Win9X Systemen läßt sich dies am einfachsten mit 2 Freewaretools (varset und lmod von http://home.mnet-online.de/horst.muc) erledigen.
MfG maneich
Antwort 2 von harm01
Danke,
das war die Lösung,
manchmal hat man ein Brett vorm Kopf
zur Info
Batch1:
for /F %%i IN (`type datei2.txt`) DO call bat2.bat %%i
Batch2:
set hilf=%1
type datei1.txt | find "%hilf%" >nul
if errorlevel 1 echo %go% >> datei3.txt
Gruss
das war die Lösung,
manchmal hat man ein Brett vorm Kopf
zur Info
Batch1:
for /F %%i IN (`type datei2.txt`) DO call bat2.bat %%i
Batch2:
set hilf=%1
type datei1.txt | find "%hilf%" >nul
if errorlevel 1 echo %go% >> datei3.txt
Gruss
Antwort 3 von manei
Hallo,
gern geschehen, aber mit dem for-Befehl in Batch1, arbeitet er damit alle Zeilen in der datei2 ab, benötigst Du da keinen Zähler?
Ich kenne mich mit WinNT-Systemen nicht so gut aus.
Würde mich aber interessieren
MfG maneich
gern geschehen, aber mit dem for-Befehl in Batch1, arbeitet er damit alle Zeilen in der datei2 ab, benötigst Du da keinen Zähler?
Ich kenne mich mit WinNT-Systemen nicht so gut aus.
Würde mich aber interessieren
MfG maneich
Antwort 4 von harm01
Jede Zeile aus Datei2 wird mit dem Type Befehl nach %i gebracht und für jede Zeile wird Batch2 aufgerufen
Gruss
Gruss
Antwort 5 von manei
Hallo,
OK und danke
MfG maneich
OK und danke
MfG maneich

