[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理如何判断IP是否在IP段?

前天搞了个自启脚本方便自己工作用,结果被别人挖走了
然后脑子一想有两种方法,
一种是自启下载iplist.txt下来,判断本机IP在不在这个txt里有,有则运行下面的语句
但是这种方法要下载ip.txt...
然后第二种就是判断本机IP是否在192.168.0.25-192.168.78或者192.168.3.52-192.3.90或者192.168.5.20-192.168.55,在则运行下面的语句,不在不运行
第二种方法好是好,但是一想懵了,我对for操作不熟,无从下手
求dalao们支招

??为啥表情符号不显示

TOP

  1. @echo off
  2. REM verify if any ipv4 address falls in a special subnet
  3. setlocal EnableDelayedExpansion
  4. set "subnet1=192.168.0.25-192.168.0.78"
  5. set "subnet2=192.168.3.52-192.168.3.90"
  6. set "subnet3=192.168.5.20-192.168.5.55"
  7. for /f "tokens=3" %%A in ('netsh interface ipv4 show addresses^|find /i "IP"^|find /v "127.0.0.1"') do (
  8.   set IPv4=%%A
  9.   call :IPv4ToInt32 "%%A" "IPv4my"
  10.   for /f "tokens=1-3 delims==-" %%B in ('set subnet') do (
  11.     call :IPv4ToInt32 "%%C" "IPv4lo"
  12.     call :IPv4ToInt32 "%%D" "IPv4hi"
  13.     if !IPv4my! geq !IPv4lo! if !IPv4my! leq !IPv4hi! (
  14.       set fallsubnet=%%B
  15.       goto subnetproc
  16.     )
  17.   )
  18. )
  19. goto end
  20. :subnetproc
  21. echo.Your IPv4 address "%IPv4%" is in "%fallsubnet%=!%fallsubnet%!"
  22. REM more tasks
  23. goto end
  24. :end
  25. endlocal
  26. pause
  27. exit /b
  28. :IPv4ToInt32 IPv4 outvar
  29. set Int32=0
  30. for /f "tokens=1-4 delims=." %%A in ("%~1") do (
  31.   set /a "Int32=((%%A*256+%%B)*256+%%C)*256+%%D"
  32. )
  33. if not "%~2"=="" set %~2=%Int32%
  34. exit /b
复制代码
微信:flashercs
QQ:49908356

TOP

回复 1# kav0123


    你IP地址段是不是打错了?
    应该是 192.168.0.25-192.168.0.78  ,  192.168.3.52-192.168.3.90  ,  92.168.5.20-192.168.5.55
  1. @echo off
  2. for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do set ip=%%a
  3. for /F "tokens=3,4 delims=." %%i in ("%ip%") do (
  4.     if %%i EQU 0 if %%j GEQ 25 if %%j LEQ 78 set "self=true"
  5.     if %%i EQU 3 if %%j GEQ 52 if %%j LEQ 90 set "self=true"
  6.     if %%i EQU 5 if %%j GEQ 20 if %%j LEQ 55 set "self=true"
  7. )
  8. if not "%self%"=="true" exit /B
复制代码

TOP

回复 4# wujunkai


    hh,还真写错了,谢谢dalao

TOP

回复 3# flashercs


  dalao,请问这  IPv4ToInt32和subnetproc分别是啥?有点疑惑

TOP

subnetproc是IP在指定网段内你要做什么事情.
微信:flashercs
QQ:49908356

TOP

回复 7# flashercs


    就是符合IP段内的内容放这个subnetproc里吗,dalao

TOP

回复 8# kav0123

搞定了吗?楼主。

TOP

返回列表