I want to get the ipv4 192.168.1.* from the ipconfig. I'm learning scripting and want to make an output value message box that displays the ip and copies it to clipboard. I have already done this by using the registry, but that is computer-specific as the adapters are unique per computer. So how do I get the computer to grab the 192.168.1.* for any computer using ipconfig, and copy it to the clipboard?
3 Answers
ipconfig /all|clip
So the first part is the ipconfig /all command. You already know that one.
Next is a vertical line |, called a pipe. It "pipes" the output of the command to the left of it to another place. clip simply means the clipboard.
Note that not every local IP starts with 192.168..; cool people like me use 10.0.0.*.
If you want just the IP address, and not the rest of the output of the command, please look at the accepted answer over at this question: How do I extract the IPv4 IP Address from the output of ipconfig
I edited that answer a bit so that it does what you want:
@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "ipv4"`) do (
rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78"
rem split on : and get 2nd token
for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
rem we have " 192.168.42.78"
rem split on . and get 4 tokens (octets)
for /f "tokens=1-4 delims=." %%c in ("%%b") do (
set _o1=%%c
set _o2=%%d
set _o3=%%e
set _o4=%%f
rem strip leading space from first octet
set _4octet=!_o1:~1!.!_o2!.!_o3!.!_o4!
echo !_4octet!|clip
)
)
)
rem add additional commands here
endlocal
Credits: DavidPostill
Copy that to a textfile. Rename the file whatever.bat. Doubleclick on it to run it. It is a Batch file.
Just open a command prompt:
ipconfig /all.
Then use Mark and Copy feature of Command.
Then copy and now it is on the clipboard.
Screen shots shown. There is more than necessary - you can just copy the IP address
.
.
I pasted into Notepad to show the result.
Autoconfiguration Enabled . . . . : Yes Link-local IPv6 Address . . . . . : IPv4 Address. . . . . . . . . . . : 192.168......(Preferred) Subnet Mask . . . . . . . . . . . : 255.255.255.0 Lease Obtained. . . . . . . . . . : Tuesday, September 14, 2021 1:20:05 PM Lease Expires . . . . . . . . . . : Wednesday, September 15, 2021 7:08:24 PM Default Gateway . . . . . . . . . : 192.168. DHCP Server . . . . . . . . . . . : 192.168. DHCPv6 IAID . . . . . . . . . . . : 165980064 DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-22-F6-47-43-54-EE-75-B2-63-DA DNS Servers . . . . . . . . . . . : 192.168. NetBIOS over Tcpip. . . . . . . . : Enabled
As I said before in the comments you can have more than 1 local IP (version 4) depending on how many real or virtual network adapters you have installed and if they are active.
Here is a batch | VBS hybrid that I made that shows the IP addresses of your adapters and then saves it to the clipboard.
Copy the code to notepad and save it to a file with .bat extension...
@echo off
setLocal EnableDelayedExpansion
IF /i exist "MessageBox.vbs" del /q "MessageBox.vbs"
If /i exist "IP.tmp" del /q "IP.tmp"
set "Text1=x=msgbox^("Your local IPV4 Address has been copied to the clipboard:"^& vbCrLf ^& vbCrLf ^&"
For /f "skip=2 delims=" %%a in ('"wmic nicconfig where IPEnabled=True get Description,IPAddress /format:csv"') do for /f "tokens=2,3 delims=,;{" %%b in ("%%~a") do (
set /a Counter+=1
set IP[!Counter!]=%%b: %%c
)
for /L %%a in (1,1,%Counter%) do (
>>"IP.tmp" echo !IP[%%a]!
IF NoT %%a EQU %Counter% (set "Text2=!Text2!"!IP[%%a]!"^& vbCrLf &") else (set "Text2=!Text2!"!IP[%%a]!"^& vbCrLf")
)
>"MessageBox.vbs" echo %Text1%!Text2!,0, "Your Local IP Adresses"^)
type "IP.tmp" |clip
MessageBox.vbs
del /q Messagebox.vbs
del /q "IP.tmp"
- 5,221


