Solved

How do I parse the octets of an IP address into environment variables on a batch file?

Posted on 2008-06-18
4
2,320 Views
Last Modified: 2008-06-27
Greetings -

Does anyone know of a way to parse the octets of an IP address into environment variables in DOS?  There has to be some trick using loops or something to do this.  I would think... :)

What I would like to do is parse the first three octets into one environment variable and just ignore the final octet.

So if I had an IP address if 192.168.100.1, I would like to create an environment variable named %MYIP% and have it contain "192.168.100".

Is this doable?  Thanks in advance...

P.S.  If it would be easier to parse each octet into its own variable such as %OCTET1%, %OCTET2%, etc... I could use that too.  But I'd prefer to have the first three octets in one variable if possible.
0
Comment
Question by:amendala
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 17

Expert Comment

by:Jared Luker
ID: 21817700
I'm not sure how to do it with Batch, but here is a way to do it with VBScript.

This will get the IP of all adapters that TCP/IP is enabled on (usually there is just one) and has a first octet of 10.  You could use the split function to break up the IP address by using a period as a delimiter.
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshNetwork = WScript.CreateObject("WScript.Network")	'Network Object
 
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
	Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
	'On error commands are a fix for script errors when a new pc runs the script for the first time.
	'On Error Resume next
	'On Error GoTo 0
	
	For Each IPConfig in IPConfigSet
	
		If Not IsNull(IPConfig.IPAddress) Then 
			For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
				ipadds = IPConfig.IPAddress(i)
				WScript.Echo "ipadds = " & ipadds
				If Left(ipadds,2) = "10" Then
					CurrentIP = IPConfig.IPAddress(i)
					MACAddress = IPConfig.Macaddress(i)
				End If
			Next
		End If
	Next

Open in new window

0
 

Author Comment

by:amendala
ID: 21817710
Thanks for the reply Jared by unfortunately, it needs to be done in a DOS batch context given the limitations of the environment that this function must work in.  That said, I'll certainly be keeping that snippet for future reference.  :)
0
 
LVL 17

Expert Comment

by:Jared Luker
ID: 21822656
Do all these computers only have one NIC when you do an ipconfig?
0
 

Accepted Solution

by:
amendala earned 0 total points
ID: 21823641
They may have multiple NICs but I only want the one that Windows sees as the "primary slot" which is usually the one with a gateway defined.

I managed to write up a simple elegant solution on my own that works great!  I've included the snippet...

:: Ping the computer the batch file is running on one time and parse
:: out the IP address and assign it to environment variable %IP%.
for /f "tokens=2 delims=[]" %%i in ('ping -n 1 "%computername%"') do set IP=%%i
 
:: Echo %IP% to the screen and parse the tokens using a period as a
:: delimeter and assign each octet to a variable.
for /f "tokens=1 delims=." %%i in ('echo %IP%') do set OCTET1=%%i
for /f "tokens=2 delims=." %%i in ('echo %IP%') do set OCTET2=%%i
for /f "tokens=3 delims=." %%i in ('echo %IP%') do set OCTET3=%%i
for /f "tokens=4 delims=." %%i in ('echo %IP%') do set OCTET4=%%i
 
:: Assign octets 1 through 3 to a single variable.
set OCTET13=%OCTET1%.%OCTET2%.%OCTET3%

Open in new window

0

Featured Post

Edgartown IT Case Study

Learn about Edgartown's quest to ensure the safety and security of the entire town's employee and citizen data. Read the case study!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

How to record audio from input sources to your PC – connected devices, connected preamp to record vinyl discs, streaming media, that play through your audio card: Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10 – both 32 bit & 64.
No single Antivirus application (despite claims by manufacturers) will catch or protect you from all Virus / Malware or Spyware threats. That doesn't stop you from further protecting yourself however - and this article is to show you how.
This Micro Tutorial will give you a basic overview of Windows DVD Burner through its features and interface. This will be demonstrated using Windows 7 operating system.
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question