标题: [网络连接] 批处理怎样获取本机多网卡IP并对比多个IP? [打印本页]
作者: citygun 时间: 2018-5-10 15:10 标题: 批处理怎样获取本机多网卡IP并对比多个IP?
本帖最后由 citygun 于 2018-5-16 13:11 编辑
楼主写了个批处理想获取本机内网IP地址并对比多个IP,显示相应对话框,下面代码在楼主自己机器上测试通过(win7 64 有单个物理网卡及多个虚拟网卡),
现在有个问题,在别的机器运行不正确,echo一下IP显示为默认,无法获取真实IP,
求大神获取本机IP这里应该怎么写兼容性比较好一些,提取本机所有网卡的IP地址并对比IP库,查询一致弹出错误对话框。
系统大多为xp,win7,win10- @echo off
- title 显示本机IP脚本
-
- for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
- set IP=%%a
- )
-
- color 0b
-
- if "%ip%"=="192.168.0.122" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
- if "%ip%"=="192.168.6.168" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
- if "%ip%"=="192.168.4.11" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
- if "%ip%"=="192.168.6.191" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
复制代码
想解决的问题是在客户机上运行批处理,获取本机的真实IP地址,然后对比数据库里的地址,如果相同则弹出相应的对话框。客户机系统为winxp win7 win10 print route则存在不同的输出问题,由于本人小白一枚,翻了半天论坛测试后如下代码可以解决问题。- @echo off
- color 0b
- call :GetIPAddress ip
- echo 你的本机IP为:%ip%
- echo.
- if "%ip%"=="192.168.0.122" color 4e & echo 你的机器有感染病毒风险,请尽快通知管理员。 & mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
- echo.
- echo.
- echo 按任意键关闭程序 &pause>NUL
- ::pause & exit
-
- :GetIPAddress
- for /f "delims=:( tokens=2" %%i in (
- ' ipconfig /all ^| findstr /rc:"IP[v4]* Address" /rc:"IP[v4]* 地址" '
- ) do (
- for /f "tokens=1-4 delims=. " %%a in ("%%i") do (
- set "%~1=%%a.%%b.%%c.%%d"
- set "%~2=%%c"
- set "%~3=%%d"
- ) 2>nul
- goto :eof
- )
- goto :eof
复制代码
引用自tmplinshi大神的代码
但总感觉代码不够精炼,有点太繁琐,不知各位高手有没有更好的解决方法。
作者: citygun 时间: 2018-5-15 23:46
这个问题好复杂的么。。。
作者: Batcher 时间: 2018-5-16 08:28
回复 2# citygun
不算特别复杂。你需要先把规律总结出来:XP、Win7、Win10里面route print的结果格式有可能不一样
作者: citygun 时间: 2018-5-16 14:31
回复 3# Batcher
想把得到的ip跟一堆ip进行对比,值相同则弹出警告框,不同的则提示正常,不知道这段代码如何写比较简练。
作者: Batcher 时间: 2018-5-16 16:41
回复 4# citygun
把那堆IP放到bat文件里面或者单独放到txt文件里面
用findstr命令来判断
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |