标题: [网络连接] [分享]写了个关于ip地址格式判断合法的批处理 [打印本页]
作者: light.ming 时间: 2013-9-27 00:10 标题: [分享]写了个关于ip地址格式判断合法的批处理
本帖最后由 pcl_test 于 2016-12-15 12:29 编辑
大家测试下,给下改进意见。- @echo off&setlocal enabledelayedexpansion
- color f0
- :loop
- set ip=
- set /p ip=请输入ip:
-
- if not defined ip echo ip地址不能为空。&goto :loop
-
- for /f "tokens=1-4* delims=." %%a in ("!ip!") do (
- set a=%%a
- set b=%%b
- set c=%%c
- set d=%%d
- set e=%%e
- echo !a! !b! !c! !d!
- if not defined a echo 请检查ip地址格式!&goto :loop
- if not defined b echo 请检查ip地址格式!&goto :loop
- if not defined c echo 请检查ip地址格式!&goto :loop
- if not defined d echo 请检查ip地址格式!&goto :loop
- if defined e echo 请检查ip地址格式!&goto :loop
- echo !a!!b!!c!!d!|findstr /i /v "^[0-9]*$" >nul&&(echo 纯数字!!!&echo.&goto :loop)
- if !a! gtr 255 echo 输入不能大于255!!!&goto :loop
- if !b! gtr 255 echo 输入不能大于255!!!&goto :loop
- if !c! gtr 255 echo 输入不能大于255!!!&goto :loop
- if !d! gtr 255 echo 输入不能大于255!!!&goto :loop
- )
-
- 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
缩短点怎么样- @echo off
- set /p ip=请输入IP:
- echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto end
- (for /f "tokens=4 delims=." %%i in ("%ip%") do (
- for %%j in (%ip:.=,%) do if %%j gtr 255 goto end
- ))||goto end
- echo 输入正确
- echo.
- pause & exit
- :end
- echo 输入错误
- 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地址验证,人家早就想到了,写好了,你还重复制造(还需要多次修改才能合格)的 破烂 轮子干嘛呢?
你只需要调用即可呀。- # powershell代码例子:(愿意的话,你也可以把这些个ip地址 放到你的脚本中测测)
- $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"
- #将返回true 或false, 倒数第一个合法,那是因为会自动扩展成123.233.0.4,倒数第二个不是零,剩下都简单我就不说了。
- foreach ($temp in $ipgroup )
- {
- [system.net.ipaddress]::tryparse("$temp",[ref]$null)
- }
复制代码
俺扯着嗓子吼道: 同志们~~~~,用powershell,告别重造破轮~~~
作者: dreamer 时间: 2024-6-18 07:22
回复 10# PowerShell
別人的心血不應該踐踏,你給的例子不也在造車,網路上到處有可以檢查IP是否正確的程式,你又何必寫呢?你又何必使用powershell呢?反正到處是工具.
你可以大聲喊推進到powershell,但不需要管別人的需求,這才是重點而不是打擊別人.
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |