我正在制作一个程序来检查用户的IP是否是某个IP地址.
目前,我创建了一个成功的内部IP版本:
@echo off set userIp=192.168.90.100 for /f "tokens=4 delims= " %%i in ('route print ^| find " 0.0.0.0"') do set localIp=%%i for /f "delims=[] tokens=2" %%a in ('ping %computername% -4 -n 1 ^| findstr "["') do set thisip=%%a goto :Check :Check if %localIp%==%userIp% goto :Good if %thisip%==%userIp% goto :Good goto :Bad
我正在尝试使用与外部IP协同工作的相同功能.
我在网上研究过,这是我到目前为止所得到的.
@echo off for /f "tokens=2 delims=:" %%a IN ('nslookup myip.opendns.com. resolver1.opendns.com ^| findstr /IC:"Address"') do if /i %%a=="10.11.12.13" goto :Good goto :Bad
我需要一些帮助来解决这个问题.
真诚的,djmrminer.
使用纯批处理/已存在的工具:
编辑:更改批处理以正确处理IPv6地址
@Echo off for /f "tokens=1* delims=: " %%A in ( 'nslookup myip.opendns.com. resolver1.opendns.com 2^>NUL^|find "Address:"' ) Do set ExtIP=%%B Echo External IP is : %ExtIP%
参考
另一个与powershell:
@Echo off For /f %%A in ( 'powershell -command "(Invoke-Webrequest "http://api.ipify.org").content"' ) Do Set ExtIP=%%A Echo External IP is : %ExtIP%