batch-fileip

How do I get the IP address into a batch-file variable?


I have an odd question, not sure if its possible.

I'd like to write a script, and for example I'm going to use ipconfig as my command.

Now when you normally run this command theres a ton of output.

What I'd like to have is a script that would show only the IP address, for example.

echo Network Connection Test
ipconfig <---This would run in the background
echo Your IP Address is: (INSERT IP ADDRESS HERE)

The output would be

Network Connection Test

Your IP Address is: 192.168.1.1

Is this even possible?


Solution

  • This will print the IP addresses in the output of ipconfig:

    @echo off
    set ip_address_string="IPv4 Address"
    rem Uncomment the following line when using older versions of Windows without IPv6 support (by removing "rem")
    rem set ip_address_string="IP Address"
    echo Network Connection Test
    for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) do echo Your IP Address is: %%f
    

    To only print the first IP address, just add goto :eof (or another label to jump to instead of :eof) after the echo, or in a more readable form:

    set ip_address_string="IPv4 Address"
    rem Uncomment the following line when using older versions of Windows without IPv6 support (by removing "rem")
    rem set ip_address_string="IP Address"
    for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) do (
        echo Your IP Address is: %%f
        goto :eof
    )
    

    A more configurable way would be to actually parse the output of ipconfig /all a little bit, that way you can even specify the adapter whose IP address you want:

    @echo off
    setlocal enabledelayedexpansion
    ::just a sample adapter here:
    set "adapter=Ethernet adapter VirtualBox Host-Only Network"
    set adapterfound=false
    echo Network Connection Test
    for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig /all`) do (
        set "item=%%f"
        if /i "!item!"=="!adapter!" (
            set adapterfound=true
        ) else if not "!item!"=="!item:IP Address=!" if "!adapterfound!"=="true" (
            echo Your IP Address is: %%g
            set adapterfound=false
        )
    )