中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 讨论:用findstr 判断输入的ip是否合法
« [1] [2] [3] »
作者:
标题: 讨论:用findstr 判断输入的ip是否合法 上一主题 | 下一主题
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 16 楼』:  

它说了是Regular expression,也说了是“快速参考”,所以我觉得好歹不应该只有这一点的。
但可惜一直找不到它具体支持的列表

2008-5-9 17:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 17 楼』:  

基本就那么多吧
?,/d /w /n /r  很多都没用

2008-5-9 17:14
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 18 楼』:  

在CU潜水时看到的:

匹配IP地址
\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)
\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)

2008-5-10 01:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
joyn
中级用户

丶杏灬丶


积分 280
发帖 105
注册 2008-5-6
来自 广西
状态 离线
『第 19 楼』:  

findstr这个命令我用的少~~

2008-5-10 02:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 20 楼』:  

18楼 HAT 兄弟,能给个完整代码吗?我用你的测试怎么都不对啊??



致精致简!
2008-5-10 11:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 21 楼』:  

这样呢
findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$"
@echo off
set /p ip=请输入IP:
echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto err
set ip1=%ip:.= %
call:lp %ip1%
:lp
if "%4"=="" echo ip格式不对&pause&exit
echo 正确
pause&exit
:err
echo ip格式不对&pause&exit

[ Last edited by terse on 2008-5-10 at 12:21 PM ]



简单!简单!再简单!
2008-5-10 12:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by terse at 2008-5-10 12:19:
这样呢
findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$"
@echo off
set /p ip=请输入IP:
echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto err
set ip1=%ip:.= ...

256.256.256.256

正确=。=

2008-5-10 12:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 23 楼』:  

@echo off
set /p ip=请输入IP:
echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto err
set ip1=%ip:.= %
call:lp %ip1%
:lp
if %1 GEQ 232 echo ip格式不对&pause&exit
if %2 GEQ 255 echo ip格式不对&pause&exit
if %3 GEQ 255 echo ip格式不对&pause&exit
if %4 GEQ 255 echo ip格式不对&pause&exit
echo 正确
pause&exit
:err
echo ip格式不对&pause&exit

2008-5-10 13:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by slore at 2008-5-10 13:14:
@echo off
set /p ip=请输入IP:
echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto err
set ip1=%ip:.= %
call:lp %ip1%
:lp
if %1 GEQ 232 echo ip格式不对&pau ...

如果考虑255以上情况  可以简化一下IP标签下
@echo off
set /p ip=请输入IP:
echo %ip%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto err
set ip1=%ip:.= %
call:lp %ip1%
:lp
if "%4"=="" goto err
for %%i in (%ip1%) do if %%i gtr 255 goto err
echo 正确
pause&exit
:err
echo ip格式不对&pause&exit

[ Last edited by terse on 2008-5-10 at 01:23 PM ]



简单!简单!再简单!
2008-5-10 13:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 25 楼』:  



  Quote:
Originally posted by HAT at 2008-5-10 01:46 AM:
在CU潜水时看到的:

匹配IP地址
\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)
\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)

测试失败……

首先应该没有换行……
将转义字符“\”弄回去后
([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(([0-9]{1,3}.){3}[0-9]{1,3})

但findstr 貌似不支持 {N} 以及分组,所以这个用不了



正在潜水修练的批处理小白
2008-5-10 13:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 26 楼』:  

就是想直接用findstr就判断出格式是否正确,
写了个自己都看不懂的代码,但却可以达到效果。
@echo off
set /p ip=输入ip
set "num=^[0-9]*[0-9]\.[0-9]*[0-9]\.[0-9]*[0-9]\.[0-9]*[0-9]$"
echo %ip%|findstr /x "%num%">nul&&echo ip 正确||echo ip 错误
pause




致精致简!
2008-5-10 13:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 27 楼』:  

[0-9]*[0-9]

所匹配的是数字,且至少是1位,可以是2、3……N位



正在潜水修练的批处理小白
2008-5-10 13:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 28 楼』:  

27 楼 没注意楼主要求吧,不需要判断数字的位数,当然能判断更好。



致精致简!
2008-5-10 13:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
FQ
社区乞丐





积分 -61
发帖 37
注册 2008-4-19
状态 离线
『第 29 楼』:  

新手,请各路大侠指教
@echo off&setlocal
:begin
set/p ip=输入IP Address (Format:xxx.xxx.xxx.xxx):
if not defined ip (goto begin)
echo/%ip%|findstr /r "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$" >nul 2>&1||goto begin
for %%a in ("%ip:.=" "%") do call :QF %%a
echo %keep:~1%
goto:eof
:QF
for /f "delims=0 tokens=*" %%b in (%1) do (
set a=%%b
if not defined a (call:FQ 0) else call:FQ %%b
)
goto:eof
:FQ
if %1 gtr 255 (cls&&echo 错误IP地址如下:)
set keep=%keep%.%1
[ Last edited by FQ on 2008-5-10 at 10:39 PM ]

2008-5-10 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youling126
初级用户





积分 87
发帖 42
注册 2008-5-7
状态 离线
『第 30 楼』:  

findstr还不怎么会用,谁懂的发个贴来介绍介绍

2008-5-10 18:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: