标题: [系统相关] 【已解决】批处理怎样把输入内容限制为IP格式? [打印本页]
作者: 小智BAT 时间: 2014-10-3 16:39 标题: 【已解决】批处理怎样把输入内容限制为IP格式?
本帖最后由 小智BAT 于 2014-10-5 12:31 编辑
如题,最近喜欢上BAT,在写个批处理缺不会了。
set /p input=请输入IP地址(如:192.168.1.100):
要求:在输入内容限制为IP格式的判断。求大神给个源码,万分感谢。。。不能输入字母、文字等,最好包括一下特殊符号也不能输入,但“.”(点)肯定要有的。
再次感谢。。。。- @echo off
- set "pattern_包含=^[^.]*\.[^.]*\.[^.]*\.[^.]*$"
- set "pattern_排除=[^.][^.][^.][^.] [^0-9.] \.\."
- :reip
- set /p str2=请输入字符:
- echo %str2%|findstr "%pattern_包含%"|findstr /v "%pattern_排除%"|findstr /v "[0-9][0-9][0-9][0-9] [3-9][0-9][0-9] 2[6][0-9] 25[6-9]" && echo %str2% || echo 这不是IP地址请重新输入。&goto reip
- pause>nul
复制代码
作者: 小智BAT 时间: 2014-10-3 23:01
@echo off
set str0=0123456789
set str1=^.
:reip
set /p str2=请输入字符:
echo %str2%|findstr "[%str0%][%str1%]">nul||(echo 亲,这不是IP地址格式,请重新输入!&goto :reip)
echo %str2%
pause>nul
限制只能输入数字,但没限制数字的长度。IP地址最大是:255.255.255.255,哪位大神指导下怎么实现?
作者: xxpinqz 时间: 2014-10-4 01:08
正则哦,论坛很多人都很行,除了此楼。
作者: 小智BAT 时间: 2014-10-4 07:49
回复 3# xxpinqz
难道就没有人能回复下?
作者: CrLf 时间: 2014-10-4 09:01
本帖最后由 CrLf 于 2014-10-4 09:08 编辑
举个栗子:- set "pattern_包含=^[^.]*\.[^.]*\.[^.]*\.[^.]*$"
- set "pattern_排除=[^.][^.][^.][^.] [^0-9.] \.\."
- echo 12.1.44.6|findstr "%pattern_包含%"|findstr /v "%pattern_排除%" && echo 正确 || echo
- 错误
复制代码
另,代码请加 code:
请使用 code 标记把代码部分括起来(选中代码后,单击回复框的 <> 按钮),以便复制。
作者: 小智BAT 时间: 2014-10-4 10:01
回复 5# CrLf
大神,那怎么限制数值不能大于255啊???
作者: yu2n 时间: 2014-10-4 11:17
百度/Bing 搜索一下:- findstr IP地址 site:bathome.net
复制代码
作者: DAIC 时间: 2014-10-4 11:50
回复 6# 小智BAT - @echo off
- set "pattern_包含=^[^.]*\.[^.]*\.[^.]*\.[^.]*$"
- set "pattern_排除=[^.][^.][^.][^.] [^0-9.] \.\."
-
- :reip
- set "input=192.168.0.123"
- set /p "input=请输入IP(直接回车默认是 192.168.0.123):"
- echo %input%|findstr "%pattern_包含%"|findstr /v "%pattern_排除%">nul || (echo 亲,这不是IP地址格式,请重新输入!&goto :reip)
- for /f "tokens=1-4 delims=." %%a in ("%input%") do (
- if %%a leq 255 (
- if %%b leq 255 (
- if %%c leq 255 (
- if %%d leq 255 (
- goto :result
- )
- )
- )
- )
- )
- echo 亲,这不是IP地址格式,请重新输入!&goto :reip
-
- :result
- echo,%input%
- pause
复制代码
作者: apang 时间: 2014-10-4 23:57
本帖最后由 apang 于 2014-10-9 10:13 编辑
这种事交给 vbs 好像要合适一点- Input = InputBox("输入IP:", , "192.168.1.1")
- If IsEmpty(Input) Then WScript.Quit
- Set re = New RegExp
- re.Pattern = "^(?:(?:[1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){4}$"
- MsgBox re.Test(Input & ".")
复制代码
作者: CrLf 时间: 2014-10-5 00:10
回复 9# apang
本想说 js 好像更合适,但看到 inputbox...只好打个地洞逃走了
作者: 小智BAT 时间: 2014-10-5 12:14
回复 10# CrLf
重要能实现就好。。。谢谢你的栗子,我根据的栗子和人家的栗子做了一个。- @echo off
- set "pattern_包含=^[^.]*\.[^.]*\.[^.]*\.[^.]*$"
- set "pattern_排除=[^.][^.][^.][^.] [^0-9.] \.\."
- :reip
- set /p str2=请输入字符:
- echo %str2%|findstr "%pattern_包含%"|findstr /v "%pattern_排除%"|findstr /v "[0-9][0-9][0-9][0-9] [3-9][0-9][0-9] 2[6][0-9] 25[6-9]" && echo %str2% || echo 这不是IP地址请重新输入。&goto reip
- pause>nul
复制代码
你看看。。。非常感谢大家那么热心的帮忙。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |