|
Here goes another code of mine. It uses ipconfig /all for getting the information. That was done because getting the MAC is impossible in any other way (but with a helper EXE file). Also it works on all Windows platforms (NT/2k/XP tested).
Note that you will need to adjust the script for other languages. It's currently working on english and german environments.
FUNCTION GETNETWORKINFORMATION () SHELL "%COMSPEC% /C %WINDIR%\system32\ipconfig.exe /all >%temp%\ipconfig.txt" IF OPEN(10, "%TEMP%\ipconfig.txt")=0 $NetworkLine = READLINE(10) $NetworkInGroup = "NO" WHILE @ERROR=0 IF LEFT($NetworkLine,1)=CHR(9) OR LEFT($NetworkLine,1)=CHR(32) ; Tab/Space-Found, are we already in a group? IF $NetworkInGroup="NO" $NETWORK_IP = "" $NETWORK_SUBNET = "" $NETWORK_MAC = "" $NetworkInGroup = "YES" ENDIF $NetworkLine = SUBSTR($NetworkLine,2) $NetworkPos = INSTRREV($NetworkLine,":") $NetworkData = TRIM(SUBSTR($NetworkLine,$NetworkPos+1)) $NetworkPos = INSTR($NetworkLine,".") IF $NetworkPos>0 $NetworkLine = TRIM(LEFT($NetworkLine,$NetworkPos-1)) IF $NetworkLine="Physikalische Adresse" OR $NetworkLine="Physical Address" $NETWORK_MAC = $NetworkData ENDIF IF $NetworkLine="IP-Adresse" OR $NetworkLine="IP Address" $NETWORK_IP = $NetworkData ENDIF IF $NetworkLine="Subnetzmaske" OR $NetworkLine="Subnet Mask" $NETWORK_SUBNET = $NetworkData ENDIF ENDIF ELSE IF $NetworkInGroup="YES" IF LEN($NETWORK_IP)>0 AND LEN($NETWORK_SUBNET)>0 AND LEN($NETWORK_MAC)>0 $ = CLOSE(10) RETURN ENDIF ENDIF ENDIF $NetworkLine = READLINE(10) LOOP $ = CLOSE(10) ENDIF $NETWORK_IP = "" $NETWORK_SUBNET = "" $NETWORK_MAC = "" ENDFUNCTION
|