mac aus vendor list auslesen zu jeder mac in einer mac adress tabelle
helo
was ich genau möchte ist, aus einer mac list.txt die hersteller auslesen.
das geht ganz gut doch es liest mir in der 2.ten for schleife immer nur die letzte teil mac ein!!
ich möchte aber nicht nur die letze sondern von 1rsten bis zum letzen. eintrag in der formatlist.txt .
ich verstehe schon warum das passiert doch ich weis nicht wie ich das realisieren kann..?
bibers hilfe könnte ich jetz mehr als gebrauchen...
cyu lowbyte
was ich genau möchte ist, aus einer mac list.txt die hersteller auslesen.
das geht ganz gut doch es liest mir in der 2.ten for schleife immer nur die letzte teil mac ein!!
ich möchte aber nicht nur die letze sondern von 1rsten bis zum letzen. eintrag in der formatlist.txt .
ich verstehe schon warum das passiert doch ich weis nicht wie ich das realisieren kann..?
bibers hilfe könnte ich jetz mehr als gebrauchen...
cyu lowbyte
@echo off
@For /F "tokens=2" %%i in (arp_req.txt) do @Echo. %%i >> formatlist.txt
for /F %%f in (formatlist.txt) do @set "stringfmac=%%f"
Set request=%stringfmac:~0,8%
echo.%request%
type IEEEMACLIST.txt | find /I "%request%" >> test.txt
for /F "delims=" %%i in (test.txt) do if not defined string set "string=%%i" >nul
echo.%string%
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 76786
Url: https://administrator.de/contentid/76786
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo lowbyte1!
Da Du keine Namenskonventionen für die zu erzeugenden neuen Textdateien genannt hast, verwende ich einfach eine laufende (sechsstellige) Nummer:
Grüße
bastla
[Edit] Die Problemstellung hat sich während des Schreibens meiner Antwort aber sehr verändert (siehe Titel des Kommentars) ... [/Edit]
Da Du keine Namenskonventionen für die zu erzeugenden neuen Textdateien genannt hast, verwende ich einfach eine laufende (sechsstellige) Nummer:
@echo off & setlocal
set "SourceFile=D:\Deine Textdatei.txt"
set "TargetDir=D:\Test"
if not exist "%TargetDir%" md "%TargetDir%"
set /a Nr=1000001
for /f "usebackq delims=" %%i in ("%SourceFile%") do call :ProcessLine "%%i"
goto :eof
:ProcessLine
echo %~1>"%TargetDir%\%Nr:~-6%.txt"
set /a Nr+=1
Grüße
bastla
[Edit] Die Problemstellung hat sich während des Schreibens meiner Antwort aber sehr verändert (siehe Titel des Kommentars) ... [/Edit]
Hallo lowbyte1!
Falls auch meine Unterstützung akzeptabel wäre ...
Ein Lösungsansatz wäre auch in diesem Fall der Aufruf eines Unterprogramms:
Soferne Du keine besondere Verwendung für die "formatlist.txt" hast und auch die "test.txt" keinen anderen Sinn hätte, als die passenden Zeilen der "EEEMACLIST.txt" zwischenzuspeichern, um dann deren erste weiter verwenden zu können, sollte auch genügen:
Da Du keine näheren Infos zum Aufbau der beiden Textdateien angeführt hast, sind die obigen Versionen ungetestet.
Grüße
bastla
[Edit] Fehlinterpretation hinsichtlich des gewünschten Tokens aus den Zeilen der "arp_req.txt" korrigiert. [/Edit]
Falls auch meine Unterstützung akzeptabel wäre ...
Ein Lösungsansatz wäre auch in diesem Fall der Aufruf eines Unterprogramms:
@echo off & setlocal
for /f "tokens=2" %%i in (arp_req.txt) do echo. %%i >> formatlist.txt
for /f %%f in (formatlist.txt) do call :ProcessLine "%%f"
goto :eof
:ProcessLine
set "stringfmac=%~1"
set request=%stringfmac:~0,8%
echo.%request%
set string=
type IEEEMACLIST.txt | find /I "%request%" >> test.txt
for /f "delims=" %%i in (test.txt) do if not defined string set "string=%%i" >nul
echo.%string%
@echo off & setlocal
for /f "tokens=2" %%i in (arp_req.txt) do call :ProcessLine "%%i"
goto :eof
:ProcessLine
set "stringfmac=%~1"
set request=%stringfmac:~0,8%
echo.%request%
set string=
for /f "delims=" %%i in ('findstr /i "%request%" IEEEMACLIST.txt') do if not defined string set "string=%%i"
echo.%string%
Grüße
bastla
[Edit] Fehlinterpretation hinsichtlich des gewünschten Tokens aus den Zeilen der "arp_req.txt" korrigiert. [/Edit]
Hallo lowbyte1!
Freut mich, dass es klappt.
Etwas verkürzen ließe sich das Ganze noch:
Noch kürzer wäre:
Hierzu allerdings der Hinweis, dass wegen der "delayedexpansion" alle "!" bei der Ausgabe der Herstellernamen verloren gehen - beim derzeitigen Stand der "IEEEMACLIST.txt " beträfe das allerdings nur "AMAZING CONTROLS! INC.".
Grüße
bastla
Freut mich, dass es klappt.
Etwas verkürzen ließe sich das Ganze noch:
@echo off & setlocal
for /f "tokens=2" %%i in (arp_req.txt) do call :ProcessLine "%%i"
pause
goto :eof
:ProcessLine
set "sss=%~1"
set "var=%sss:~0,8%"
echo.%var%
findstr /i "%var%" IEEEMACLIST.txt
@echo off & setlocal enabledelayedexpansion
for /f "tokens=2" %%i in (arp_req.txt) do set "sss=%%i" & set "var=!sss:~0,8!" & (echo.!var!) & findstr /i "!var!" IEEEMACLIST.txt
Grüße
bastla
Hallo lowbyte1!
Am einfachsten wäre es, die gesamte Zeile in ":ProcessLine" auszugeben. Die relevanten Codeblöcke sähen dann so aus:
und
Grüße
bastla
Am einfachsten wäre es, die gesamte Zeile in ":ProcessLine" auszugeben. Die relevanten Codeblöcke sähen dann so aus:
...
...
Echo. %request% -UP- Localhost
for /F "tokens=1,2" %%i in (arp_req.txt) do call :ProcessLine "%%i" "%%j"
Echo.
Echo.
Echo.
Echo.
Echo.
Echo.All Activ Hosts im Subnet
...
...
:ProcessLine
set "sss=%~2%"
set "var=%sss:~0,8%"
set "V=not found"
for /f "tokens=2*" %%a in ('findstr /i "%var%" IEEEMACLIST.txt') do set "V=%%b"
Echo. %~1 -UP- MAC = %~2 - %V%
goto :eof
Grüße
bastla
Moin lowbyte1,
auch wenn es so wie jetzt sicher funktioniert, würde ich aus ästhetischen Gründen vorschlagen, einen mehrfach verwendbaren Block einzubauen:
Grüße
Biber
auch wenn es so wie jetzt sicher funktioniert, würde ich aus ästhetischen Gründen vorschlagen, einen mehrfach verwendbaren Block einzubauen:
.....
@Echo off & Color 0A & Setlocal
Title Lowbyte
for /L %%i in (1,1,25) do call :Werbepause
goto :Hauptfilm
~~~~~~~
:Werbepause
cls
echo.
echo.
echo.
echo. %random%
echo. %random%
echo. %random%
echo. ) LOWBYTE
echo. %random%
echo. %random%
echo. %random%
ping -n 1 localhost>nul
goto :eof
~~~~
:Hauptfilm
....
Grüße
Biber