Board logo

标题: [文本处理] 批处理如何写一个IP段生成器? [打印本页]

作者: 我爱你芮儿    时间: 2013-3-11 18:43     标题: 批处理如何写一个IP段生成器?

对于for没学好,怎么都写不出,格式嘛这样……先是初始地址,然后是结束地址,生成的是中间的地址,生成在该目录的下为txt
感谢
作者: 我爱你芮儿    时间: 2013-3-11 18:47

表述有点不清楚啊,重新表述下格式就是先输入起始的地址,再回车后输入结束地址,然后生成在目录下的txt,且生成一个地址后要换行啊
作者: BAT-VBS    时间: 2013-3-11 20:49

  1. @echo off
  2. for /l %%a in (1,1,255) do (
  3.     echo 192.168.0.%%a
  4. )
复制代码

作者: 我爱你芮儿    时间: 2013-3-11 21:39

回复 3# BAT-VBS


    大哥,不是这么简单的,这个简单的我也会,我是说的整个ip段
作者: BAT-VBS    时间: 2013-3-11 21:45

回复 4# 我爱你芮儿


    请给具体的例子
作者: ghl621    时间: 2013-3-11 22:21

我觉得你要IP段就按3楼写的就可以了,你要其他IP段找那样把变量改一下就可以。
最后要生成“TXT”文件,ECHO后面加两个>如:
echo 192.168.0.%%a >>IP.txt
这样就能生成IP文本段文件。
作者: wankoilz    时间: 2013-3-11 22:58

3楼给的不就是一个段么...
作者: asfor78    时间: 2013-3-11 23:27

这个 我有代码给你
  1. @shift
  2. @shift
  3. @echo off
  4. MODE con: COLS=40 lines=20
  5. color 5f
  6. title 自定义生成小段Ip
  7. echo.
  8. echo 使用说明:
  9. echo.
  10. echo   输入Ip头,生成段数,并用空格隔开.
  11. echo   Ip段规则:某项最大数值为255
  12. echo   将生成后的Ip段写入AllIp.txt
  13. echo.
  14. echo   正确方法 :) 例:113 0 2       √
  15. echo   生成后小段Ip:
  16. echo           113.0.0.0 113.0.255.255
  17. echo           113.1.0.0 113.1.255.255
  18. echo           113.2.0.0 113.2.255.255
  19. echo.
  20. echo   错误方法 :( 例:113 0 256     ×
  21. echo   生成后某一段:
  22. echo           113.256.0.0 113.256.255.255
  23. echo.
  24. echo.
  25. echo  请认真阅读使用说明,按任意键开始生成.
  26. pause >nul
  27. cls
  28. del /a /f /q 自定义生成小段Ip.txt >nul 2>nul
  29. set a=
  30. set /p a=请输入:
  31. for /f "tokens=1-3" %%i in ("%a%") do (
  32. for /l %%a in (%%j,1,%%k) do (echo %%i.%%a.0.0 %%i.%%a.255.255>>Ip.txt)
  33. )
  34. Ip.txt
  35. 
复制代码

作者: 我爱你芮儿    时间: 2013-3-12 12:06

回复 5# BAT-VBS


    可视化的这样
请输入起始IP段:xxx.xxx.xxx.xxx(例,100.123.11.03)
请输入结束IP段:xxx.xxx.xxx.xxx(例,100.124.255.255)
在桌面上(或者该文件目录下)生成一个txt
txt里面则是这样
100.123.11.04
100.123.11.05
……
100.124.255.254
100.124.255.255
就是这样……我怎么都写不出来……
作者: 我爱你芮儿    时间: 2013-3-12 12:08

回复 8# asfor78


    你这个代码我这里也有,不过没用了啊
作者: wankoilz    时间: 2013-3-13 11:21

看这个能用不,上万行就有点慢了
  1. Option Explicit
  2. Dim strBegin_ip,strEnd_ip,FSO
  3. strBegin_ip=InputBox("请输入起始IP地址:")
  4. If Not IsIP(strBegin_ip) Then
  5.     MsgBox "非法IP!",0,"错误"
  6.     WScript.Quit
  7. End If
  8. strEnd_ip=InputBox("请输入结束IP地址")
  9. If Not IsIP(strEnd_ip) Then
  10.     MsgBox "非法IP!",0,"错误"
  11.     WScript.Quit
  12. End If
  13. Set FSO=CreateObject("scripting.filesystemobject")
  14. FSO.CreateTextFile("IP地址.txt",True).Write(GenerateIP(strBegin_ip,strEnd_ip))
  15. CreateObject("wscript.shell").run "IP地址.txt"
  16. Function GenerateIP(strBegin,strEnd)
  17. Dim arrBegin,arrEnd,intSum_begin,intSum_end
  18. Dim intSeg1,intMod1,intSeg2,intMod2,intSeg3,intMod3,intSeg4
  19. Dim i
  20. arrBegin=Split(strBegin,".",-1)
  21. arrEnd=Split(strEnd,".",-1)
  22. intSum_begin=arrBegin(0)*256^3+arrBegin(1)*256^2+arrBegin(2)*256+arrBegin(3)
  23. intSum_end=arrEnd(0)*256^3+arrEnd(1)*256^2+arrEnd(2)*256+arrEnd(3)
  24. If intSum_end-intSum_begin<0 Then
  25.     MsgBox "结束IP大于起始IP",0,"错误"
  26.     WScript.Quit
  27. End If
  28. For i = intSum_begin To intSum_end
  29.     intSeg1=int(i/256^3):intMod1=i-intSeg1*256^3
  30.     intSeg2=Int(intMod1/256^2):intMod2=intMod1-intSeg2*256^2
  31.     intSeg3=Int(intMod2/256):intMod3=intMod2-intSeg3*256
  32.     intSeg4=intMod3
  33.     GenerateIP=GenerateIP&intSeg1&"."&intSeg2&"."&intSeg3&"."&intSeg4&vbCrLf
  34. Next
  35. End Function
  36. Function IsIP(strIPAddress)
  37.     Dim oRegex
  38.     Set oRegex=CreateObject("VBscript.Regexp")
  39.     oRegex.Global=True
  40.     oRegex.Pattern="((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))"
  41.     IsIP=oRegex.Test(strIPAddress)
  42. End Function
复制代码

作者: 我爱你芮儿    时间: 2013-3-20 12:28

回复 11# wankoilz


    感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2