Hi.
Ich habe eine Batchdatei geschrieben, die allerdings nur unter TakeCommand, 4Dos und 4NT läuft. Das sind alternative Kommandozeileninterpreter, die es als Shareware bei JPSoft gibt ( http://jpsoft.com/ ). Die Batchdatei nimmt als Parameter einen Dateinamen entgegen. Dies ist die Datei, in der gesucht werden soll. Wird der Parameter weggelassen, wird die Datei syslog.txt aus dem aktuellen Verzeichnis verwendet. Es wird das erste Vorkommen von „local IP address is“ gesucht und die dahinterstehende IP ausgegeben. Um die IP in eine Datei zu schreiben kann man per Dateiumleitung die Ausgabe umleiten.
Hier die Datei ip.btm (darf auch ip.bat heissen, darf aber nicht mit der command.com oder cmd.exe von Windows ausgeführt werden):
@echo off
rem \* Diese Batch liest aus der übergegebenen Datei (wenn keine übergeben wird,
rem \* wird die Datei syslog.txt aus dem aktuellen Verzeichnis verwendet) den
rem \* String "local IP address is" und gibt die dahinterstehende IP aus.
rem \* Wird die IP in einer Datei benötigt kann dies per Umleitung
rem \* "ip.btm \> datei" geschehen. Die Batch muss unter TakeCommand, 4NT
rem \* oder 4DOS ausgeführt werden. Getestet wurde nur unter TakeCommand.
rem \* (c) 2002 by Sebastian Schmidt, keine Garantie auf korrekten Programmablauf
setlocal
set datei=%@IF[exist "%1","%1",syslog.txt]
set ip="not found"
if not exist %datei goto ende
set zeile=0
> loop
set pos=%@index["%@line[%datei,%zeile]",local IP address is]
if %pos != -1 goto loopende
if %@lines[%datei] == %zeile goto ende
set zeile=%@inc[%zeile]
goto loop
> loopende
set ip=%@word[0,%@instr[%@eval[%pos+20],15,"%@line[%datei,%zeile]"]]
> ende
echo %ip
endlocal
CU,
Sebastian.