Store IP address in variable - windows version ind

2019-02-24 19:34发布

I have looked around and cant seem to find an in house windows version independent solution to getting the ip address of a computer in a batch file. What I would like to do is, no matter what windows machine I am on (whether its running win 7 or XP or maybe even 98) I would like to be able to figure out the ip address and store it into a variable in an easy fashion.

I can use ipconfig and parse out the IPv4 address but windows 7 outputs something slightly different than earlier versions so I would first have to figure out what version of windows they have and then look for the appropriate string. Any help would be great!

4条回答
Deceive 欺骗
2楼-- · 2019-02-24 20:02

XP Pro / Vista / 7 / 8:

For Windows XP and newer I would recommend using WMIC.

@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get ipaddress') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
echo %IP%

98 / 2000 / XP Home:

@echo off
for /f "tokens=2* delims=:" %%A in ('ipconfig /all ^| find "IP Address"') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
for /f "tokens=2* delims=:" %%A in ('ipconfig /all ^| find "IPv4 Address"') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
echo %IP%

Other Commands

netsh interface ip show addresses

nbtstat -n | find "IpAddress:"

查看更多
Summer. ? 凉城
3楼-- · 2019-02-24 20:17

I guess this would do it:

@echo off
FOR /F "tokens=2,3" %%A IN ('ping %computername% -n 1 -4') DO IF "from"== "%%A" set "IP=%%~B"
echo %IP:~0,-1%
查看更多
时光不老,我们不散
4楼-- · 2019-02-24 20:18

Get your real internet IP Windows version independent with GNU wget

@echo off&setlocal
for /f %%i in ('wget ident.me --output-document=- 2^>nul') do set "myRealIP=%%i"
if defined myRealIP (echo Your real IP is stored in %myRealIP%) else echo Error! No connection to the internet.
查看更多
\"骚年 ilove
5楼-- · 2019-02-24 20:20

This works fine with windows 10

@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get ipaddress') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
for /f "tokens=1 delims=:" %%j in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localip=%%j
)
echo Public IP is: %IP%
echo Local  IP is: %localip:~11%

Returns both public and private IP

查看更多
登录 后发表回答