标题: [其他] 判断输入的字符串是否为合法的IP地址 [打印本页]
作者: diverpan 时间: 2017-3-17 23:00 标题: 判断输入的字符串是否为合法的IP地址
本帖最后由 pcl_test 于 2017-3-18 01:07 编辑
写了个判断输入信息是否属于IP地址的bat
思路比较简单,就是先判断格式,是否有3个“.”,然后判断每个段的值是否满足0-255这个数值的范围。
新司机上路,求老司机们多多关照,看看能否优化代码或者给点新的代码思路。- @echo off&setlocal enabledelayedexpansion
- set /p string=请输入字符串:
- set /a d=0
- set /a a=0
-
- if "%string%" equ "" (
- echo 输入为空
- goto :stop
- )
-
- if "%string%" neq "" goto :loop
- :loop
- if "!string:~%a%,1!" equ "." set /a d+=1
- if "!string:~%a%,1!" neq "" (
- set /a a+=1
- goto :loop)
-
- if %d%==3 (
- for /f "tokens=1-4 delims=." %%a in ("%string%") do (
- if %%a lss 0 goto :reason
- if %%a gtr 255 goto :reason
- if %%b lss 0 goto :reason
- if %%b gtr 255 goto :reason
- if %%c lss 0 goto :reason
- if %%c gtr 255 goto :reason
- if %%d lss 0 goto :reason
- if %%d gtr 255 goto :reason
- echo IP地址为:%string%
- goto :stop
- )
-
- ) else (
- echo 不属于IP地址格式
- goto :stop
- )
-
- :reason
- echo 输入信息中存在不为0-255的整数
- goto :stop
-
- :stop
- pause
复制代码
作者: diverpan 时间: 2017-3-17 23:01
自己先沙发一下
作者: happy886rr 时间: 2017-3-17 23:37
本帖最后由 happy886rr 于 2017-3-17 23:45 编辑
- @echo off&set/p StringIP=Input the IP:
- echo %StringIP%|1>NUL findstr /berc:" *[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* *" && echo True IP || echo False IP&set/p=
复制代码
作者: pcl_test 时间: 2017-3-18 00:36
回复 1# diverpan
试试输入1..2 3.4或1.2 3. 4.
作者: pcl_test 时间: 2017-3-18 00:37
- @echo off
- set /p str=输入ip:
- echo;%str%|findstr "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$">nul || (echo;N&pause&exit)
- for %%a in (%str:.= %) do (
- echo;%%a|findstr "^[0-9]$ ^[1-9][0-9]$ ^1[0-9][0-9]$ ^2[0-4][0-9]$ ^25[0-5]$">nul && (set /a n+=1)
- )
- if "%n%" equ "4" (echo;Y) else echo;N
- pause
复制代码
作者: diverpan 时间: 2017-3-20 20:50
回复 4# pcl_test
大神啊,一下子就帮我找出问题了。。。
作者: WHY 时间: 2017-3-20 23:24
本帖最后由 WHY 于 2017-3-21 16:05 编辑
- set "IP=192.168.1.100"
- PowerShell -c "'.%IP%' -match '^(?:\.(?:[1-9]?\d|1\d\d|2[0-4]\d|25[0-5])){4}$'"
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |