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

[文件操作] [己解决]IP格式识别的批处理该如何编写?

:ip
set /p ip=地址:
if /i "%ip%"=="IP格式代码" goto a
goto ip
:a


请教高手,这个IP格式代码该如何编写??

要求识别格式:*.*.*.*
*表示:0-255

[ 本帖最后由 keshun 于 2010-10-13 02:58 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. ::================= 判断IP地址是否正确 ========================
  2. :isIP addr
  3. set IP_addr=%~1&set "IP_ture=1"
  4. echo %IP_addr%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul 2>nul||(set "IP_ture=0"&goto:eof)
  5. for %%a in (%IP_addr:.=,%) do (if %%a gtr 255 set "IP_ture=0")
  6. goto:eof
  7. ::=========== end = 判断IP地址是否正确 =========================
复制代码

TOP

回复 20楼 的帖子

是有点美中不足,但也勉强可以,也想请教高手帮忙优化下代码



  1. :输入
  2. :重设1
  3. set 标号=1
  4. set 格式输入=
  5. set /p 格式输入= 输入IP 地址:
  6. goto 识别格式
  7. :回设1
  8. echo.
  9. :重设2
  10. set 地址=%格式%
  11. set 标号=2
  12. set 格式输入=
  13. set /p 格式输入= 输入子网掩码:
  14. goto 识别格式
  15. :回设2
  16. echo.
  17. :重设3
  18. set 子网=%格式%
  19. set 标号=3
  20. set 格式输入=
  21. set /p 格式输入= 输入默认网关:
  22. goto 识别格式
  23. :回设3
  24. echo.
  25. :重设4
  26. set 网关=%格式%
  27. set 标号=4
  28. set 格式输入=
  29. set /p 格式输入= 输入首选DNS:
  30. goto 识别格式
  31. :回设4
  32. echo.
  33. :重设5
  34. set 首选=%格式%
  35. set 标号=5
  36. set 格式输入=
  37. set /p 格式输入= 输入备用DNS:
  38. goto 识别格式
  39. :回设5
  40. set 备用=%格式%
  41. goto 跳过
  42. :识别格式
  43. setlocal enabledelayedexpansion
  44. set 格式=%格式输入%
  45. set "s=[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
  46. echo %格式%|findstr /be "%s%" >nul||set flag=a
  47. set n=%格式:.= %
  48. for %%a in (%n%) do (
  49.    set /a var=1%%a 2>nul
  50.    if !var! gtr 1255 set flag=a
  51. )
  52. if defined flag echo  错误,请重新输入&endlocal&goto 重设%标号%
  53. goto 回设%标号%
  54. :跳过
  55. cls
  56. echo                  ╭────────────────────╮
  57. echo                  │                                        │
  58. echo                  │     确  认  信  息  是  否  准  确     │
  59. echo                  │                                        │
  60. echo                  ╰────────────────────╯
  61. echo.
  62. echo.
  63. echo   【1】IP 地址: %地址%
  64. echo.
  65. echo   【2】子网掩码:%子网%
  66. echo.
  67. echo   【3】默认网关:%网关%
  68. echo.
  69. echo   【4】首选 DNS:%首选%
  70. echo.
  71. echo   【5】备用 DNS:%备用%
  72. echo.
  73. :确认
  74. echo.
  75. echo  确认无误:按[ y ]继续,确认有误:按[ n ]重设
  76. echo.
  77. set 确认=
  78. set /p 确认= 请输入确认结果:
  79. if /i "%确认%"=="y" goto 设置
  80. if /i "%确认%"=="n" goto 输入
  81. goto 确认
复制代码

[ 本帖最后由 keshun 于 2010-10-13 14:37 编辑 ]

TOP

回复 8楼 的帖子

遗憾的是,你给出的条件不足以判断用户输入的IP是否合法。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

将11楼代码中的set "s=[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" 改为
set "s=[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"

TOP

回复 11楼 的帖子

感谢版主,随风,我测过11楼的代码,可以达到比较好的效果,但还存有一个问题,第四组数字不输入时“*.*.*.”也确定为正常

请输入ip: 12.11.2
输入错误
请输入ip: 12.11.2.
正确ip 12.11.2.
请按任意键继续. . .

[ 本帖最后由 keshun 于 2010-10-12 23:50 编辑 ]

TOP

回复 11楼 的帖子

还是超版厉害,一下就写好了
---学无止境---

TOP

回复 15楼 的帖子

如果不要求数字0-255,只要求是四组数字用“.”分隔的格式就确定为正确,那代码又该怎么编写。

TOP

回复 14楼 的帖子

呵呵,我只是给他个提示,我不想动手写啊,我写的都是“长篇大论!”,想学习你们“精悍短小”的代码!~

TOP

回复 12楼 的帖子

这样局限了只能输入3位数字,还是无法满足楼主要求,如: 1.2.3.4
技术问题请到论坛发帖求助!

TOP

回复 11楼 的帖子

晕,你动作真快啊!~

TOP

回复 10楼 的帖子

随风兄,我发现你那个代码屡试不爽,我又在你目前班门弄斧一下:
  1. @echo off
  2. set /p id= ID: &cls
  3. echo.%id%|findstr /be "[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]"||echo 输入错误
  4. pause
复制代码

TOP

  1. @echo off
  2. :start
  3. setlocal enabledelayedexpansion
  4. set /p ip= 请输入ip &cls
  5. set "s=[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"
  6. echo %ip%|findstr /be "%s%" >nul||set flag=a
  7. set n=%ip:.= %
  8. for %%a in (%n%) do (
  9.    set /a var=1%%a 2>nul
  10.    if !var! gtr 1255 set flag=a
  11. )
  12. if defined flag echo  输入错误&endlocal&goto start
  13. echo 正确ip %ip%
  14. pause
复制代码
1

评分人数

技术问题请到论坛发帖求助!

TOP

回复 4楼 的帖子

期待4楼的代码
技术问题请到论坛发帖求助!

TOP

回复 8楼 的帖子

判断IP?
据我对IP的了解,一个合格的IP应当:
1、符合这个格式:000.000.000.000,三个数字一组,共四组。
2、小组之间使用点号分隔。
3、每组数字最大只能是255?因此封顶是:255.255.255.255。
4、但也有不是三个数字一组的,如:192.168.1.1。
因此,判断只能是:
四组数字;每组最大三位数255,最小一位数0;每组数使用点号分隔。
你的题目要求符合吗?

TOP

返回列表