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

[其他] 判断输入的字符串是否为合法的IP地址

本帖最后由 pcl_test 于 2017-3-18 01:07 编辑

写了个判断输入信息是否属于IP地址的bat
思路比较简单,就是先判断格式,是否有3个“.”,然后判断每个段的值是否满足0-255这个数值的范围。
新司机上路,求老司机们多多关照,看看能否优化代码或者给点新的代码思路。
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p string=请输入字符串:
  3. set /a d=0
  4. set /a a=0
  5. if "%string%" equ "" (
  6. echo 输入为空
  7. goto :stop
  8. )
  9. if "%string%" neq "" goto :loop
  10. :loop
  11. if "!string:~%a%,1!" equ "." set /a d+=1
  12. if "!string:~%a%,1!" neq "" (
  13. set /a a+=1
  14. goto :loop)
  15. if %d%==3 (
  16. for /f "tokens=1-4 delims=." %%a in ("%string%") do (
  17. if %%a lss 0 goto :reason
  18. if %%a gtr 255 goto :reason
  19. if %%b lss 0 goto :reason
  20. if %%b gtr 255 goto :reason
  21. if %%c lss 0 goto :reason
  22. if %%c gtr 255 goto :reason
  23. if %%d lss 0 goto :reason
  24. if %%d gtr 255 goto :reason
  25. echo IP地址为:%string%
  26. goto :stop
  27. )
  28. ) else (
  29. echo 不属于IP地址格式
  30. goto :stop
  31. )
  32. :reason
  33. echo 输入信息中存在不为0-255的整数
  34. goto :stop
  35. :stop
  36. pause
复制代码

自己先沙发一下

TOP

本帖最后由 happy886rr 于 2017-3-17 23:45 编辑
  1. @echo off&set/p StringIP=Input the IP:
  2. 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=
复制代码

TOP

回复 1# diverpan

试试输入1..2 3.4或1.2 3. 4.

TOP

  1. @echo off
  2. set /p str=输入ip:
  3. echo;%str%|findstr "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$">nul || (echo;N&pause&exit)
  4. for %%a in (%str:.= %) do (
  5.     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)
  6. )
  7. if "%n%" equ "4" (echo;Y) else echo;N
  8. pause
复制代码

TOP

回复 4# pcl_test

大神啊,一下子就帮我找出问题了。。。

TOP

本帖最后由 WHY 于 2017-3-21 16:05 编辑
  1. set "IP=192.168.1.100"
  2. PowerShell -c "'.%IP%' -match '^(?:\.(?:[1-9]?\d|1\d\d|2[0-4]\d|25[0-5])){4}$'"
复制代码

TOP

返回列表