Board logo

标题: [网络连接] 批处理怎样获取本机多网卡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
  1. @echo off
  2. title 显示本机IP脚本
  3. for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  4. set IP=%%a
  5. )
  6. color 0b
  7. if "%ip%"=="192.168.0.122" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
  8. if "%ip%"=="192.168.6.168" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
  9. if "%ip%"=="192.168.4.11"  mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
  10. if "%ip%"=="192.168.6.191" mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
复制代码
想解决的问题是在客户机上运行批处理,获取本机的真实IP地址,然后对比数据库里的地址,如果相同则弹出相应的对话框。客户机系统为winxp win7 win10   print route则存在不同的输出问题,由于本人小白一枚,翻了半天论坛测试后如下代码可以解决问题。
  1. @echo off
  2. color 0b
  3. call :GetIPAddress ip
  4. echo 你的本机IP为:%ip%
  5. echo.
  6. if "%ip%"=="192.168.0.122" color 4e & echo 你的机器有感染病毒风险,请尽快通知管理员。 & mshta vbscript:CreateObject("Wscript.Shell").popup("你的机器IP是 %ip% 可能有感染病毒的风险,请尽快联系管理员处理!",0,"警告!",16)(window.close)
  7. echo.
  8. echo.
  9. echo 按任意键关闭程序 &pause>NUL
  10. ::pause & exit
  11. :GetIPAddress
  12.     for /f "delims=:( tokens=2" %%i in (
  13.         ' ipconfig /all ^| findstr /rc:"IP[v4]* Address" /rc:"IP[v4]* 地址" '
  14.     ) do (
  15.         for /f "tokens=1-4 delims=. " %%a in ("%%i") do (
  16.             set "%~1=%%a.%%b.%%c.%%d"
  17.             set "%~2=%%c"
  18.             set "%~3=%%d"
  19.         ) 2>nul
  20.         goto :eof
  21.     )
  22. 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