本帖最后由 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大神的代码
但总感觉代码不够精炼,有点太繁琐,不知各位高手有没有更好的解决方法。 |