Batch einlesen und suchen aus einer Datei ?
Hi, ich habe folgendes Problem:
Ich will das meine Batch diverse unbekannte Dateien auf ihre Hex-Signatur hin überprüft.
Damit ich nicht alle bekannten Signaturen in der batch per IF Anweisung überprüfen muss,
sollen diese aus einer zweiten Textdatei, die ich als Datenbank verwenden will eingelesen werden.
Die ersten 20 Zeichen lese ich per SFK ein und überprüfe sie dann mit dem IF Befehl.
etwa so:
Die Datenbank hatte ich mir in etwa so vorgestellt:
34484B48 Dallmeier
4D5A9000 .exe
25504446 .pdf
52494646 .k26
Frage: Wie greife ich jetzt lesend auf eine zweite Datei zu ?
Das ganze soll auf verschiedenen Rechnern mit unterschiedlichen Windowsversionen laufen.
Wäre toll, wenn mir da irgend jemand einen Tip gegen könnte.
Ich will das meine Batch diverse unbekannte Dateien auf ihre Hex-Signatur hin überprüft.
Damit ich nicht alle bekannten Signaturen in der batch per IF Anweisung überprüfen muss,
sollen diese aus einer zweiten Textdatei, die ich als Datenbank verwenden will eingelesen werden.
Die ersten 20 Zeichen lese ich per SFK ein und überprüfe sie dann mit dem IF Befehl.
etwa so:
:start
sfk hexdump -offlen 0 20 %1 >%temp%\finf.tmp
:dallmeier
grep 34484B48 %temp%\finf.tmp
if errorlevel == 1 goto :exe REM um auf den nächsten Dateityp zu überprüfen.
echo.
echo Dateityp erkannt: Dallmeier
goto :end
Die Datenbank hatte ich mir in etwa so vorgestellt:
34484B48 Dallmeier
4D5A9000 .exe
25504446 .pdf
52494646 .k26
Frage: Wie greife ich jetzt lesend auf eine zweite Datei zu ?
Das ganze soll auf verschiedenen Rechnern mit unterschiedlichen Windowsversionen laufen.
Wäre toll, wenn mir da irgend jemand einen Tip gegen könnte.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 122073
Url: https://administrator.de/forum/batch-einlesen-und-suchen-aus-einer-datei-122073.html
Ausgedruckt am: 23.12.2024 um 07:12 Uhr
9 Kommentare
Neuester Kommentar
Hallo Blarks und willkommen im Forum!
Weshalb 20 Zeichen - lässt sich der Typstring nicht exakt extrahieren? Wenn das möglich wäre, würde ich die Suche umkehren und eine Datei "Typenliste" als "Datenbank" verwenden, aus der per "findstr" (oder "grep") die passende Zeile gefiltert und mit einem "for /f" zerlegt werden könnte ...
Ansonsten etwa:
Grüße
bastla
[Edit] "defined" in Zeile 5 korrigiert [/Edit]
Weshalb 20 Zeichen - lässt sich der Typstring nicht exakt extrahieren? Wenn das möglich wäre, würde ich die Suche umkehren und eine Datei "Typenliste" als "Datenbank" verwenden, aus der per "findstr" (oder "grep") die passende Zeile gefiltert und mit einem "for /f" zerlegt werden könnte ...
Ansonsten etwa:
:start
for /f "delims=" %%i in ('sfk hexdump -offlen 0 20 %1') do set "String=%%i"
set Typ=
for /f "usebackq tokens=1,2" %%i in ("D:\Typenliste.txt") do (echo %String%|findstr "%%i">nul && set "Typ=%%j")
if not defined Typ echo Kein passender Typ gefunden & goto :eof
echo.
echo Dateityp erkannt: %Typ%
bastla
[Edit] "defined" in Zeile 5 korrigiert [/Edit]
Hallo Blarks!
Die enthaltenen Sonderzeichen "<" bzw ">" werden als Umleitung (der Ein- bzw Ausgabe) interpretiert - in Deinem Beispiel wird daher versucht, aus einer Quelle
zu lesen, was natürlich nicht klappen kann ...
Unter Verwendung einer Temporärdatei (analog zu Deiner ursprünglichen Fassung) sollte es aber funktionieren:
Außerdem musste anstelle von "exist" ein "defined" in die anschließende Abfrage (darauf wären wir als nächstes gekommen ) ...
Grüße
bastla
Die enthaltenen Sonderzeichen "<" bzw ">" werden als Umleitung (der Ein- bzw Ausgabe) interpretiert - in Deinem Beispiel wird daher versucht, aus einer Quelle
.........
Unter Verwendung einer Temporärdatei (analog zu Deiner ursprünglichen Fassung) sollte es aber funktionieren:
@echo off & setlocal
set "Typenliste=D:\Typenliste.txt"
set "TempFile=%temp%\finf.tmp"
sfk hexdump -offlen 0 20 %1 >"%TempFile%"
set "Typ="
for /f "usebackq tokens=1,2" %%i in ("%Typenliste%") do (findstr "%%i" "%TempFile%">nul && set "Typ=%%j")
if not defined Typ echo Kein passender Typ gefunden & goto :eof
echo.
echo Dateityp erkannt: %Typ%
Grüße
bastla