Jump to content



Photo

Retrieve a system MAC address from ipconfig /all


  • Please log in to reply
3 replies to this topic

#1 RulerOf

RulerOf

    Seeker

  • Active Members
  • 19 posts

Posted 21 March 2011 - 04:34 PM

Hello Folks,

This took me long enough to do that I thought I'd share with the world.

I needed a MAC address from AutoIt code by parsing the output from "ipconfig /all" stdout stream.

It'll return the first MAC address it finds, and contains no error handling. Quick and dirty.

#include <constants.au3> $ipconfig = Run(@ComSpec & " /c " & 'ipconfig /all', "", @SW_HIDE, $STDOUT_CHILD) Local $line = "" While 1     $line &= StdoutRead($ipconfig)     If @error Then ExitLoop WEnd $macraw = StringRegExp($line, "\s*Physical\sAddress[\s\.]*\:\s*((?:(\d{1,2}|[a-fA-F]{1,2}){2})(?::|-*)){6}", 2) $mac = StringRegExpReplace($macraw[0], "\s*Physical\sAddress[\s\.]*\:\s*", "")


Cheers,
RulerOf

P.S.: I hate regular expressions.





#2 MrCreatoR

MrCreatoR

    Must AutoIt!

  • MVPs
  • 3,241 posts

Posted 21 March 2011 - 07:00 PM

It's not working on non english system. This works fine on my system^

#include <constants.au3> $ipconfig = Run(@ComSpec & " /c " & 'ipconfig /all', "", @SW_HIDE, $STDOUT_CHILD) Local $line = "" While 1     $line &= StdoutRead($ipconfig)     If @error Then ExitLoop WEnd $macraw = StringRegExpReplace($line, "(?si).*?\s.*?[\s\.]*: ((?:(?:[a-f\d]{1,2})-?){6}).*", '\1') ConsoleWrite($macraw & @LF)

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

Posted Image AutoIt Russian CommunityPosted Image Projects: ATT - Application Translate Tool [new] | BlockIt - Block files & folders [new] | SIP - Selected Image Preview [new] | SISCABMAN - SciTE Abbreviations Manager [new] | AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramPosted Image UDFs: OnAutoItErrorRegister - Handle AutoIt critical errors [new] | AutoIt Syntax Highlight [new] | Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDFPosted Image Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation DemoLike the examples/UDFs? Please rate the topic (up-right corner of the post header: Rating Posted Image)* === My topics === *

==========================================================Posted Image==========================================================

AutoIt is simple, subtle, elegant. © AutoIt Team


#3 Nu11Byt3

Nu11Byt3

    Seeker

  • New Members
  • 3 posts

Posted 03 July 2011 - 08:35 AM

(?si).*?\s.*?[\s\.]*: ((?:(?:[a-f\d]{1,2})-?){6}).*", '\1')


can anyone explain this for me?
i have read the documentation still i am not getting. :)

Edited by Nu11Byt3, 03 July 2011 - 08:36 AM.


#4 dmob

dmob

    Prodigy

  • Active Members
  • PipPipPip
  • 191 posts

Posted 03 July 2011 - 09:33 AM

It's not working on non english system. This works fine on my system^

#include <constants.au3> $ipconfig = Run(@ComSpec & " /c " & 'ipconfig /all', "", @SW_HIDE, $STDOUT_CHILD) Local $line = "" While 1     $line &= StdoutRead($ipconfig)     If @error Then ExitLoop WEnd $macraw = StringRegExpReplace($line, "(?si).*?\s.*?[\s\.]*: ((?:(?:[a-f\d]{1,2})-?){6}).*", '\1') ConsoleWrite($macraw & @LF)

Your code only returns one. How would you retrieve both wireless & ethernet addresses?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users