@echo off & setlocal enabledelayedexpansion

rem 如果系统中有route命令,优先采用方案1:

for /f "tokens=3,4" %%a in ('route print^|find "0.0.0.0          0.0.0.0"') do (if not defined ip set "Gateway=%%a" & set "ip=%%b")

for /f "tokens=2" %%a in ('route print^|find "在链路上 %ip%"') do (if not defined mask set "mask=%%a" )

for /f "tokens=2" %%a in ('route print^|findstr "在链路上.*%ip%"') do (if not defined mask set "mask=%%a" )

rem 如果系统中没有route命令,就采用方案2:

if defined ip goto :next

for /f "delims=[]" %%a in ('ipconfig^|find /n "以太网:"') do if not defined n1 set /a n1=%%a+3

for /f "delims=[]" %%a in ('ipconfig^|find /n "本地连接:"') do if not defined n1 set /a n1=%%a+3

set /a n2=%n1%+1

set /a n3=%n1%+2

for /f "skip=%n1% tokens=2 delims=:" %%a in ('ipconfig') do if not defined ip set ip=%%a

for /f "skip=%n2% tokens=2 delims=:" %%a in ('ipconfig') do if not defined mask set mask=%%a

for /f "skip=%n3% tokens=2 delims=:" %%a in ('ipconfig') do if not defined gate set gate=%%a

set ip=%ip: =%

set mask=%mask: =%

set gate=%gate: =%

:next

echo IP地址是:%ip%

echo 子网掩码是:%mask%

echo 网关是:%gate%

pause