Sign in to follow this  
Followers 0
RulerOf

Retrieve a system MAC address from ipconfig /all

4 posts in this topic

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.

Share this post


Link to post
Share on other sites



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

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

AutoIt_Icon_small.pngProjects: 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 Program

AutoIt_Icon_small.pngUDFs: 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 UDF
 
AutoIt_Icon_small.pngExamples: 
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 Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

(?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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0