Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 04.06.2009 um 20:42:59 Uhr
Beitrag wurde zwar am 4.Juni 2009 von User Moverik wiederbelebt, aber dieser hat (richtigerweise) einen neuen Beitrag dafür eröffnet.
Diesen hier "ungelöst" geschlossen.

2 Txt-Dateien vergleichen

Frage Entwicklung Batch & Shell

Mitglied: favor

favor (Level 1) - Jetzt verbinden

22.12.2005, aktualisiert 04.06.2009, 22824 Aufrufe, 11 Kommentare

Hallo
Bin noch ein Anfänger mit Batch!
Darum bräuchte ich eure Hilfe.

Also ich will 2 Txt-Dateien vergleichen. Es sollte immer pro Zeile überprüft werden. Wenn etwas übereinstimmt soll es in eine 3 Txt-Datei geschrieben werden.

Ich hoffe ihr könnt mir helfen.


gruss
Mitglied: Biber
23.12.2005 um 00:58 Uhr
Moin favor,

Verständnisprobleme und deshalb Rückfragen.
Also ich will 2 Txt-Dateien vergleichen.
Okay...
Es sollte immer pro Zeile überprüft werden.
Versteh ich auch noch, glaube ich.
>>Wenn etwas übereinstimmt soll es in eine 3 Txt-Datei geschrieben werden.
Öhm... das versteh ich nicht. Du willst nicht die Unterschiede, sondern die Gemeinsamkeit??
Na ja, wenn es für einen guten Zweck ist...
Aber dann würde ich gern die Rahmenbedingungen wissen.

- Wenn DateiA 270000 Zeilen enthielte und DateiB 3 Mio Zeilen und nur 2 Zeilen sind in beiden Dateien gleich, dann
a) könnte es einen Moment dauern
b) könnte es den einen oder anderen Batch zerreißen.
Also, von welchen zu erwartenden Größenordnungen reden wir hier
- bei ~Zeilen je Datei
- und Grad der Unterschiedlichkeit (eher 99% gleiche Zeilen als Resultat oder eher 1% Übereinstimmung)?
Denn den Algorithmus würde ich ja schon davon abhängig machen.

Ich hoffe ihr könnt mir helfen.
Da bin ich trotz allem optimistisch.

gruss
gruss zurück
Bitte warten ..
Mitglied: favor
24.12.2005 um 09:05 Uhr
Also

Ene Text-Datei hat so ungefähr <250 Zeilen.

Die Zeilen die übereinstimmen ist etwa bei 1%.

gruss
Bitte warten ..
Mitglied: Biber
24.12.2005 um 11:38 Uhr
Okay, dann ist es machbar...

Ich habe mal zum Testen folgendes gemacht: Die Inhaltsangaben von zwei Verzeichnissen in je eine Textdatei geschrieben und anschliessend verglichen.
Angezeigt wird also, welche Dateien im ersten und zweiten Verzeichnis gleich sind.

[Vorarbeit am CMD-Prompt; befinde mich im Verzeichnis Z:\]
$cmd$ dir d:\temp\*.* >dtemp.txt
$cmd$ dir z:\*.* >z.txt

.... dann ist ja eigentlich nur eine Eingabezeile am CMD-Prompt;
$cmd$ For /F "delims=" %i in (dtemp.txt) do @((find "%i" z.txt >nul) && @echo %i
[Output:]
17.08.2005 04:45 975 CopyAllto.bat
21.07.2005 12:31 244.729 ReadVistaAdminPw.exe
10.12.2005 01:14 1.233 allfiles.txt
10.12.2005 01:14 602 allbats.txt

Falls Du lieber dafür eine Batchdatei haben möchtest:
01.
:: ---snipp SameLines.bat -------------- 
02.
@echo off & setlocal 
03.
if [%1]==[] (echo Syntax %0 datei1 datei2 [outdatei]) & goto :eof 
04.
if [%2]==[] (echo Syntax %0 datei1 datei2 [outdatei]) & goto :eof 
05.
If [%3]==[] (set "outfile=CON") else set "outfile=%3" 
06.
For /F "delims=" %%i in (%1) do ( 
07.
  (find "%%i" %2 >nul) && echo %%i>>%outfile% ) 
08.
:: ---snapp SameLines.bat ----------------
Syntax (1): -----------> selbes Ergebnis wie oben; Output auf Bildschirm
$cmd$d:SameLines.bat dtemp.txt z.txt

Syntax (2): -----> selbes Ergebnis wie oben; Output in Datei "Matching.txt"
$cmd$d:SameLines.bat dtemp.txt z.txt Matching.txt

Gruss
Bitte warten ..
Mitglied: Biber
29.12.2005 um 02:31 Uhr
Komisch, favor,
bei mir läuft dieser Batch.
Was genau funktioniert denn bei Dir nicht?

Grüße
Biber
Bitte warten ..
Mitglied: 6741
13.02.2007 um 19:13 Uhr
hi ...

ich klinke mir mal ein ...

wie vergleiche ich den Inhalt zweier TXT Datein und wenn er Unterschiedlich ist soll eine Email schrieben werden ...

vielen DANK
Bitte warten ..
Mitglied: Biber
13.02.2007 um 19:39 Uhr
Moin fwd,

das sollte noch umkompzierter sein:
-das senden einer Mail von der Konsole aus mit Blat.exe ist mehrfach hier im Forum beschreiben

und der Rest reduziert sich auf ein...
fc datei1.xyz datei2.xyz >nul && blat [blat-Parameter]

Siehe "help fc" oder "fc /?"

Gruss
Biber
Bitte warten ..
Mitglied: 6741
13.02.2007 um 20:03 Uhr
shit ist das einfach ...

kann man auch den Unterschied in eine txt Datei piepen .... ?
Bitte warten ..
Mitglied: 6741
13.02.2007 um 20:47 Uhr
dat geht nicht ...

ich habe ein dir.txt erstellt, kopiert und umbenannt.

Dann eine Zeile hinzugefügt und verglichen zwischen neu und alt. Dachte er gibt mir dir geänderte bzw neue Zeile aus. Dabei bekomme ich:
*
Vergleichen der Dateien ftp_neu.txt und FTP_ALT.TXT
* ftp_neu.txt
10.01.2007 16:36 <DIR> Ape Escape Racer
01.10.2007 TEST TEST
09.01.2007 20:14 <DIR> Blocks Club
* FTP_ALT.TXT
10.01.2007 16:36 <DIR> Ape Escape Racer
09.01.2007 20:14 <DIR> Blocks Club
*

* ftp_neu.txt
14 Datei(en) 122.665.226 Bytes
77 Verzeichnis(se), 38.746.632.192 Bytes frei
* FTP_ALT.TXT
14 Datei(en) 122.665.226 Bytes
77 Verzeichnis(se), 38.747.418.624 Bytes frei

***

möchte aber nur den Unterschied bekommt ...

selbstredent, ich habe dahinter ein

dif.txt

das ist der Ausschnitt ...

TEST TEST ist von mir geändert worden und sollte erkannt werden.

gruß
Bitte warten ..
Mitglied: Biber
13.02.2007 um 22:42 Uhr
Na gut, fwd,

eigentlich erfinde ich ja nicht so gerne Räder zum 857ten Mal... da sollten doch schon fertige Tools von begnadeteren Codern rumgeistern...
So neu kann doch das Problem "Unterschiedliche Zeilen in Textdateien anzeigen" nun nicht sein.

Aber spasshalber, wenn es noch gar nix gäbe, wenn wir hier auf dem Acker anfangen müssten, was wäre denn Dein Plan zur Darstellung?

Wenn wie auf die sinnvollere "dir /b /s"-Darstellung zurückgehen, damit wir nur die eigentlichen Änderungen sehen und nicht die Folge-Änderungen (Freierplatz und Gesamtbyte etc.),
bleiben dennoch mindestens 4 Fälle, wenn es z.B. um die Directory-Inhalte früher/jetzt auf irgendeinem Laufwerk geht:
a) In der Liste VORHER.txt gibt es eine Zeile, die es in Liste JETZT.txt nicht (mehr) gibt.
[Datei ist JETZT nicht mehr da]
b) In der Liste JETZT.txt gibt es eine Zeile, die es in Liste VORHER.txt (noch) nicht gibt.
[Datei gab es VORHER noch nicht]
c) Eine Zeile (i.e. Pfad\Dateiname) existiert schon in beiden, aber mit geänderter Größe/Uhrzeit
d) Es sind so unterschiedliche VORHER/JETZT-Listen, dass es kaum/keine "gleiche" Zeilen gibt und eine Visualisierung der Unterschiede Dönekens wäre.

Anyhow, firewalldevil, wenn wir gemeinsam darüber meditieren wollen, dann spiel ich Dir den ersten Ball zu:

Wie sollen die ersten drei Fälle konkret als Unterschiede visualisiert werden in der Bildschirm/Dateiausgabe??

In Ruhe Tee trinkend
Biber

[ Lässt sich abfangen]
Bitte warten ..
Mitglied: 6741
14.02.2007 um 11:29 Uhr
okay let´s play ... ;>)))

1. Fall:

Systemstart, nichts wurde geändert. Batch überprüft aber. Ausgabe dir_neu.txt ist gegenüber der Ausgabe dir_alt.txt ( weil txt umbenannt wurde, nach Prüfung von neu nach alt somit kann ein erneuter Test erfoglen ) völlig gleich, also darf nicht passieren. Kein Mail, alles okay.

2. Fall

System läuft und eine Datei wurde geändert bzw ein Verzeichniss hinzugefügt. Sobald die Batch läuft, ob beim Start oder einfach nur so, muss erkannt werden, das es eine Änderung gegeben hat. Dir_neu.txt hat jetzt einen Ordner mehr und soll den in die dif.txt Ausgegeben. Die dif.txt versende ich dann mit sendemail.

Das klappt auch, aber ich sehen mehr als ich möchte ...

Evtl sollte mann alles ausser die DIR Verzeichnisse ausfiltern und dann vergleichen. Denn ich möchte nur das geänderte haben nur nicht andere informationen.

so long ..

fwd

EDIT: nach erneuten TESTs

mein Filter sieht jetzt so aus:

dir /s c:\Daten\ > C:\dir\dir.txt

find /i "DIR" dir.txt >dir1.txt

find /v /i "<DIR> ." dir1.txt >dir2.txt

type dir2.txt|find /v /i "----------">dir5.txt


dann habe ich nur die Dir Verzeichnisse ...

die dir.txt steht für die dif.txt Datei, als test ... halt
Bitte warten ..
Mitglied: Moverik
04.06.2009 um 13:08 Uhr
Hallo,

Ich grabe diesen alten Thread mal wieder aus, da er gut zu meinem Problem passt.

Ich will auch zwei Dateien miteinander vergleichen und die Unterschiede dann weiterverarbeiten.

Ich habe zwei DIR Listen die verglichen werden. Nach dem Vergleich wird eine neue TXT Datei erzeugt in welche die die neuen Ordner mit Pfaden drin stehen. Wenn ich das mit dem FC Befehl mache steht in der neuen Datei aber noch viel andere Kram, und ich weiß nicht wie ich nur die neuen Dateipfade aus der TXT gepflückt bekomme um sie in eine Variable zu schreiben.
Kann mir da einer helfen?
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...