Board logo

标题: [网络连接] [分享]写了个关于ip地址格式判断合法的批处理 [打印本页]

作者: light.ming    时间: 2013-9-27 00:10     标题: [分享]写了个关于ip地址格式判断合法的批处理

本帖最后由 pcl_test 于 2016-12-15 12:29 编辑

大家测试下,给下改进意见。
  1. @echo off&setlocal enabledelayedexpansion
  2. color f0
  3. :loop
  4. set ip=
  5. set /p ip=请输入ip:
  6. if not defined ip echo ip地址不能为空。&goto :loop
  7. for /f "tokens=1-4* delims=." %%a in ("!ip!") do (
  8. set a=%%a
  9. set b=%%b
  10. set c=%%c
  11. set d=%%d
  12. set e=%%e
  13. echo !a! !b! !c! !d!
  14. if not defined a echo 请检查ip地址格式!&goto :loop
  15. if not defined b echo 请检查ip地址格式!&goto :loop
  16. if not defined c echo 请检查ip地址格式!&goto :loop
  17. if not defined d echo 请检查ip地址格式!&goto :loop
  18. if defined e echo 请检查ip地址格式!&goto :loop
  19. echo !a!!b!!c!!d!|findstr /i /v "^[0-9]*$" >nul&&(echo 纯数字!!!&echo.&goto :loop)
  20. if !a! gtr 255 echo 输入不能大于255!!!&goto :loop
  21. if !b! gtr 255 echo 输入不能大于255!!!&goto :loop
  22. if !c! gtr 255 echo 输入不能大于255!!!&goto :loop
  23. if !d! gtr 255 echo 输入不能大于255!!!&goto :loop
  24. )
  25. pause
复制代码

作者: PowerShell    时间: 2013-9-27 08:45

判断下,我这个ip地址合法么?
1451432309
作者: DAIC    时间: 2013-9-27 08:48

findstr命令的/i选项是多余的吧?
作者: DAIC    时间: 2013-9-27 08:50

回复 2# PowerShell


    这么简单的代码都看不懂
作者: light.ming    时间: 2013-9-27 12:13

回复 2# PowerShell
判断了,不合法。
作者: light.ming    时间: 2013-9-27 12:14

回复 3# DAIC
恩 /i 可以不要。
作者: PowerShell    时间: 2013-9-27 14:01

请在cmd中:
ping   1451432309
作者: DAIC    时间: 2013-9-27 14:16

回复 7# PowerShell


ping命令还能识别www.baidu.com呢,总不能说www.baidu.com是合法的IP地址啊。
作者: terse    时间: 2013-9-27 16:43

缩短点怎么样
  1. @echo off
  2. set /p ip=请输入IP:
  3. echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto end
  4. (for /f "tokens=4 delims=." %%i in ("%ip%") do (
  5.      for %%j in (%ip:.=,%) do if %%j gtr 255 goto end
  6. ))||goto end
  7. echo 输入正确
  8. echo.
  9. pause & exit
  10. :end
  11. echo 输入错误
  12. pause >nul
复制代码

作者: PowerShell    时间: 2013-9-28 10:12

ip地址,我们知道有数字型,ipv4型,ipv6型。

面向对象   之妙,,,,,就是把现实中的事物抽象,成为类。
用【ip地址】这个对象的抽象【ip地址类】来表示。
这个类,在。net中叫做【System.Net.IPAddress】
网址是:
http://msdn.microsoft.com/zh-cn/library/System.Net.IPAddress.aspx


这个类中有TryParse方法,可以测试(数字型,ipv4型,ipv6型。)ip地址合法否。
ip地址验证,人家早就想到了,写好了,你还重复制造(还需要多次修改才能合格)的 破烂 轮子干嘛呢?
你只需要调用即可呀。
  1. # powershell代码例子:(愿意的话,你也可以把这些个ip地址 放到你的脚本中测测)
  2. $ipgroup = "192.168.0.1","1451432309","::1","","fff1::101","123.456.123.123","123.43a.1.17","2001:0000:1F1F:0000:0000:0100:11A0:ADDF","1.2.o.3","123.233.4"
  3. #将返回true 或false, 倒数第一个合法,那是因为会自动扩展成123.233.0.4,倒数第二个不是零,剩下都简单我就不说了。
  4. foreach ($temp in  $ipgroup )
  5. {
  6. [system.net.ipaddress]::tryparse("$temp",[ref]$null)
  7. }
复制代码
俺扯着嗓子吼道:  同志们~~~~,用powershell,告别重造破轮~~~
作者: dreamer    时间: 2024-6-18 07:22

回复 10# PowerShell
別人的心血不應該踐踏,你給的例子不也在造車,網路上到處有可以檢查IP是否正確的程式,你又何必寫呢?你又何必使用powershell呢?反正到處是工具.
你可以大聲喊推進到powershell,但不需要管別人的需求,這才是重點而不是打擊別人.




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