Wert aus TXT exportieren, Werte vergleichen
Hi,
ich habe 2 TXTs mit MD5-Hashwerten (vorher / nachher), beide mit gleichem aufbau (TAB-getrennt).. sieht ungefähr so aus:
Dateiname [TAB] MD5-Wert [TAB] SHA1Wert [TAB] CRC32 [TAB] Dateiname m. Pfad
Beispiel.exe 75dccaba412938e84a53a3ee23f64cc4 a98bc8260f2fb2ecf6a4ae0d7e9eb44d3e96f4b12ecd4732 98210de D:\Software\Beispiel.exe
nun die Kernfrage, wie kriege ich es hin, dass ich am Ende eine Textdatei ausgeworfen bekomme, die nur die unterschiedlichen Hashwerte mir ausspuckt, bzw. da reicht mir auch schon die Dateinamen in ner TXT.. da die Dateinamen gleich sind, muss man ja wohl den Dateinamen aus der TXT auslesen, den dazugehörigen MD5-Wert mit dem Wert aus der "Nachher-TXT" vergleichen und bei Änderung den Dateinamen m. Pfad ausspucken..
Jemand ne idee wie man sowas vergleichen kann?
Danke im Voraus,
Thomas
ich habe 2 TXTs mit MD5-Hashwerten (vorher / nachher), beide mit gleichem aufbau (TAB-getrennt).. sieht ungefähr so aus:
Dateiname [TAB] MD5-Wert [TAB] SHA1Wert [TAB] CRC32 [TAB] Dateiname m. Pfad
Beispiel.exe 75dccaba412938e84a53a3ee23f64cc4 a98bc8260f2fb2ecf6a4ae0d7e9eb44d3e96f4b12ecd4732 98210de D:\Software\Beispiel.exe
nun die Kernfrage, wie kriege ich es hin, dass ich am Ende eine Textdatei ausgeworfen bekomme, die nur die unterschiedlichen Hashwerte mir ausspuckt, bzw. da reicht mir auch schon die Dateinamen in ner TXT.. da die Dateinamen gleich sind, muss man ja wohl den Dateinamen aus der TXT auslesen, den dazugehörigen MD5-Wert mit dem Wert aus der "Nachher-TXT" vergleichen und bei Änderung den Dateinamen m. Pfad ausspucken..
Jemand ne idee wie man sowas vergleichen kann?
Danke im Voraus,
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 175359
Url: https://administrator.de/contentid/175359
Ausgedruckt am: 24.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo zensbert!
Im einfachsten Fall (alle Dateien der "Nachher.txt", welche in "Vorher.txt" einen anderen MD5-Wert haben oder nicht enthalten sind) könnte das so gehen:
Bitte beachten: Als %Delim% wird in Zeile 5 ein TAB zugewiesen ...
Eigentlich hatte ich einen direkten Vergleich der gesamten Zeilen (mit
Wenn es übrigens genügt, tatsächlich nur die Dateinamen (mit Pfad) auszugeben, ließe sich das noch auf
reduzieren ...
Grüße
bastla
Im einfachsten Fall (alle Dateien der "Nachher.txt", welche in "Vorher.txt" einen anderen MD5-Wert haben oder nicht enthalten sind) könnte das so gehen:
@echo off & setlocal
set "Vorher=D:\Vorher.txt"
set "Nachher=D:\Nachher.txt"
set "Diff=D:\Differenz.txt"
set "Delim= "
del "%Diff%" 2>nul
for /f "usebackq delims=" %%i in ("%Nachher%") do for /f "tokens=1-5 delims=%Delim%" %%a in ("%%i") do findstr /b /c:"%%a%Delim%%%b" "%Vorher%">nul||>>"%Diff%" echo %%i
Eigentlich hatte ich einen direkten Vergleich der gesamten Zeilen (mit
findstr /i /v /g:"%Nachher%" "%Vorher%"
) vorgehabt, was aber an einem "zu langen Suchstring" scheitert ...Wenn es übrigens genügt, tatsächlich nur die Dateinamen (mit Pfad) auszugeben, ließe sich das noch auf
@echo off & setlocal
set "Vorher=Vorher.txt"
set "Nachher=Nachher.txt"
set "Diff=Differenz.txt"
set "Delim= "
del "%Diff%" 2>nul
for /f "usebackq tokens=1-5 delims=%Delim%" %%a in ("%Nachher%") do findstr /b /c:"%%a%Delim%%%b" "%Vorher%">nul||>>"%Diff%" echo %%e
Grüße
bastla
Hallo zensbert!
Grüße
bastla
Geht das dass ich z.B. in jeder Zeile der Log dann die ersten XX Zeichen weglösche?
Wäre es, wenn ich Dich richtig verstanden habe, nicht sinnvoller, den Teil des Pfades (also etwa "D:\Software\Skript\") anzugeben, der entfernt werden soll? In diesem Fall (weiterhin ungetestet) etwa so:@echo off & setlocal
set "Vorher=Vorher.txt"
set "Nachher=Nachher.txt"
set "Diff=Differenz.txt"
set "Delim= "
set "Basispfad=D:\Software\Skript\"
del "%Diff%" 2>nul
for /f "usebackq tokens=1-5 delims=%Delim%" %%a in ("%Nachher%") do findstr /b /c:"%%a%Delim%%%b" "%Vorher%">nul||(set "Pfad=%%e" & call :ProcessLine)
goto :eof
:ProcessLine
setlocal enabledelayedexpansion
>>"%Diff%" echo !Pfad:%Basispfad%=!
REM um 19 Zeichen am Anfang wegzulassen alternativ:
REM >>"%Diff%" echo !Pfad:~19!
endlocal
goto :eof
bastla