Zwei Textdateien vergleichen und Unterschiede filtern
Hallo ihr Lieben!
ich habe zwei Textdateien vorliegen, die zu unterschiedlichen Zeitpunkten erstellt wurden. In diesen Dateien stehen lauter Verzeichnisnamen. Ich soll nun diese beiden Dateien mittels Batch-Befehlen vergleichen und die Unterschiede der beiden Dateien in eine dritte Datei schreiben.
ich versuche mein Problem mal zu veranschaulichen:
Text1.txt
A
B
C
D
E
F
Text2.txt
A
B
C
D
In der dritten Datei sollte also nur E und F stehen.
Meine Versuche sind bisher alle gescheitert. Ich dachte mir, dass ich das mit zwei geschachtelten For-Schleifen machen kann. Die eine For Schleife geht die eine Datei durch und ruft für jeden Eintrag eine weitere for Schleife auf, die dann die andere Text-Datei vergleicht.
@for /f %%a in (Verzeichnisse_alt.txt) do @call test2.bat %%a
und
@for /f %%b in (Verzeichnisse.txt) do @if (%%b) == (%%1) (goto Ja) ELSE (goto Nein)
:Ja
@echo Vorhanden
:Nein
@echo Nein
Irgendwie gibt mir das aber immer beide Faelle aus.
Gibt es da eventuell einen Weg, wie ich zu meinem Ziel komme? Ich bin da grad ziemlich ratlos((
Viele Gruesse
die Julia
ich habe zwei Textdateien vorliegen, die zu unterschiedlichen Zeitpunkten erstellt wurden. In diesen Dateien stehen lauter Verzeichnisnamen. Ich soll nun diese beiden Dateien mittels Batch-Befehlen vergleichen und die Unterschiede der beiden Dateien in eine dritte Datei schreiben.
ich versuche mein Problem mal zu veranschaulichen:
Text1.txt
A
B
C
D
E
F
Text2.txt
A
B
C
D
In der dritten Datei sollte also nur E und F stehen.
Meine Versuche sind bisher alle gescheitert. Ich dachte mir, dass ich das mit zwei geschachtelten For-Schleifen machen kann. Die eine For Schleife geht die eine Datei durch und ruft für jeden Eintrag eine weitere for Schleife auf, die dann die andere Text-Datei vergleicht.
@for /f %%a in (Verzeichnisse_alt.txt) do @call test2.bat %%a
und
@for /f %%b in (Verzeichnisse.txt) do @if (%%b) == (%%1) (goto Ja) ELSE (goto Nein)
:Ja
@echo Vorhanden
:Nein
@echo Nein
Irgendwie gibt mir das aber immer beide Faelle aus.
Gibt es da eventuell einen Weg, wie ich zu meinem Ziel komme? Ich bin da grad ziemlich ratlos((
Viele Gruesse
die Julia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 40201
Url: https://administrator.de/contentid/40201
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
17 Kommentare
Neuester Kommentar
Hallo Julia,
wenn es auch was vorgefertigtes sein darf, empfehle ich UltraEdit: UltraEdit32 Beschreibung und Testversion
Die darin enthaltete abgespeckte UlraCompare (blaues rundes Icon in der Leiste) sollte für deine Zwecke völlig ausreichend sein.
geTuemII
wenn es auch was vorgefertigtes sein darf, empfehle ich UltraEdit: UltraEdit32 Beschreibung und Testversion
Die darin enthaltete abgespeckte UlraCompare (blaues rundes Icon in der Leiste) sollte für deine Zwecke völlig ausreichend sein.
geTuemII
Moin Julia,
ich würde da nicht gleich mit so großen Kanonen auf den kleinen Spatz schießen....
Am CMD-Prompt:
Diese Variante bringt alle "Zeilen", also bei Dir Ordnernamen oder Dateinamen, die es auch in verzeichnisse_alt.txt gibt.
Andersrum:
Diese Variante bringt alle Ordnernamen oder Dateinamen, die es NICHT in verzeichnisse_alt.txt gibt.
Genau genommen brauchst Di ja auch nur ein "Verzeichnisse_alt.txt".. das aktuelle Verzeichnis hast Du ja ohnehin..
Was brauchst Du denn noch für Kombinationen?
Gruß
Biber
ich würde da nicht gleich mit so großen Kanonen auf den kleinen Spatz schießen....
Am CMD-Prompt:
>for /f "delims=" %i in (verzeichnisse.txt) do @Findstr "%i" verzeichnisse_alt.txt >nul && @echo %i
Andersrum:
>for /f "delims=" %i in (verzeichnisse.txt) do @Findstr "%i" verzeichnisse_alt.txt >nul || @echo %i
Genau genommen brauchst Di ja auch nur ein "Verzeichnisse_alt.txt".. das aktuelle Verzeichnis hast Du ja ohnehin..
>for /f "delims=" %i in ('dir /b /a:d ') do @Findstr "%i" verzeichnisse_alt.txt >nul || @echo %i
Was brauchst Du denn noch für Kombinationen?
Gruß
Biber
Hallo Biber,
ich habe das gleiche Problem wie zuvor beschrieben, nur kommen ich mit deiner Lösung nicht ganz zurecht.
Wenn ich die zweite Variante verwende:
dann zeigt er den Inhalt von c:\Protokolle\verzeichnisse.txt:
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
c:\test\verz2\Bild3.JPG
Inhalt von c:\Protokolle\verzeichnisse.txt:
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
c:\test\verz2\Bild3.JPG
Inhalt von c:\Protokolle\verzeichnisse_alt.txt :
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
was mache ich falsch?
Gruß combat
ich habe das gleiche Problem wie zuvor beschrieben, nur kommen ich mit deiner Lösung nicht ganz zurecht.
Wenn ich die zweite Variante verwende:
dann zeigt er den Inhalt von c:\Protokolle\verzeichnisse.txt:
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
c:\test\verz2\Bild3.JPG
Inhalt von c:\Protokolle\verzeichnisse.txt:
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
c:\test\verz2\Bild3.JPG
Inhalt von c:\Protokolle\verzeichnisse_alt.txt :
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
was mache ich falsch?
Gruß combat
Moin combat,
ergänze bitte noch den FindStr-Parameter /C: , dann sollte es besser laufen.
Grüße
Biber
ergänze bitte noch den FindStr-Parameter /C: , dann sollte es besser laufen.
(=19:22:19 E:\Schnipsel=)
## in verzeichnisse.txt, nicht in Verzeichnisse_alt.txt
>for /f "delims=" %i in (verzeichnisse.txt) do @findstr /i /C:"%i" verzeichnisse_alt.txt>nul || @echo %i
c:\test\verz2\Bild3.JPG
## in verzeichnisse.txt UND auch in Verzeichnisse_alt.txt
(=19:22:34 E:\Schnipsel=)
>for /f "delims=" %i in (verzeichnisse.txt) do @findstr /i /C:"%i" verzeichnisse_alt.txt>nul && @echo %i
c:\test\Bild3.JPG
c:\test\verz1\bild1.JPG
c:\test\verz2\Bild2.JPG
Grüße
Biber
Moin juergi69,
so'n Drömelkrams kannst Du direkt vom CMD-Prompt aus abpfriemeln:
[Einzugebende Zeilen beginnen mit ">"; Demo mit Deinen Dateien A.txt und B.txt im Verzeichnis e:\work]
Hilfe unter FindStr /? am CMD-Prompt oder 0900 4711 4711 für 86 Eur/Min
Grüße
Biber
so'n Drömelkrams kannst Du direkt vom CMD-Prompt aus abpfriemeln:
[Einzugebende Zeilen beginnen mit ">"; Demo mit Deinen Dateien A.txt und B.txt im Verzeichnis e:\work]
E:\Work>
>findstr /v /g:b.txt a.txt & findstr /v /g:a.txt b.txt
a
b
f
E:\Work>
>(findstr /v /g:b.txt a.txt & findstr /v /g:a.txt b.txt) >ergebnis.txt
E:\Work>
>type ergebnis.txt
a
b
f
Hilfe unter FindStr /? am CMD-Prompt oder 0900 4711 4711 für 86 Eur/Min
Grüße
Biber
Gude,
bin neu im Forum und muss gleih einmal einen alten Post rauskramen
die von Biber angegeben Zeile
bin neu im Forum und muss gleih einmal einen alten Post rauskramen
die von Biber angegeben Zeile
funktioniert soweit auch-schonmal Danke dafür-, jedoch nicht so, wie ich es mir vorgestellt habe:
wenn ich in 1.txt folgende Informationen habe:
00001
002
00003
und in 2.txt:
00001
00002
00003
und mir die "Unterschiede in 3.txt augeben lasse,
gibt es keine!
Ist mir auch soweit einleuchtend...
Kennt jemand eine möglichkeit, womit man auch diese Eventualitäten berücksichtigen kann?!
MfG
pm