找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 40581|回复: 10

[网络连接] [分享]写了个关于ip地址格式判断合法的批处理

[复制链接]
发表于 2013-9-27 00:10:09 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
发表于 2013-9-27 08:45:59 | 显示全部楼层
判断下,我这个ip地址合法么?
1451432309
发表于 2013-9-27 08:48:48 | 显示全部楼层
findstr命令的/i选项是多余的吧?
发表于 2013-9-27 08:50:18 | 显示全部楼层
回复 2# PowerShell


    这么简单的代码都看不懂
 楼主| 发表于 2013-9-27 12:13:12 | 显示全部楼层
回复 2# PowerShell
判断了,不合法。
 楼主| 发表于 2013-9-27 12:14:21 | 显示全部楼层
回复 3# DAIC
恩 /i 可以不要。
发表于 2013-9-27 14:01:31 | 显示全部楼层
请在cmd中:
ping   1451432309
发表于 2013-9-27 14:16:13 | 显示全部楼层
回复 7# PowerShell


ping命令还能识别www.baidu.com呢,总不能说www.baidu.com是合法的IP地址啊。
发表于 2013-9-27 16:43:11 | 显示全部楼层
缩短点怎么样
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
light.ming + 1 已经很好了,基本上能过滤不合法的ip

查看全部评分

发表于 2013-9-28 10:12:35 | 显示全部楼层
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,告别重造破轮~~~
发表于 2024-6-18 07:22:55 | 显示全部楼层
回复 10# PowerShell
別人的心血不應該踐踏,你給的例子不也在造車,網路上到處有可以檢查IP是否正確的程式,你又何必寫呢?你又何必使用powershell呢?反正到處是工具.
你可以大聲喊推進到powershell,但不需要管別人的需求,這才是重點而不是打擊別人.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 00:23 , Processed in 0.009854 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表