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

[网络连接] [分享]写了个关于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
复制代码

判断下,我这个ip地址合法么?
1451432309
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

findstr命令的/i选项是多余的吧?

TOP

回复 2# PowerShell


    这么简单的代码都看不懂

TOP

回复 2# PowerShell
判断了,不合法。

TOP

回复 3# DAIC
恩 /i 可以不要。

TOP

请在cmd中:
ping   1451432309
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 7# PowerShell


ping命令还能识别www.baidu.com呢,总不能说www.baidu.com是合法的IP地址啊。

TOP

缩短点怎么样
  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

评分人数

    • light.ming: 已经很好了,基本上能过滤不合法的ip技术 + 1

TOP

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,告别重造破轮~~~
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

返回列表