找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26220|回复: 4

[网络连接] [已解决]ping某个不存在的ip,禁用网卡和不禁用,for耗费时间如何保证大致相同?

[复制链接]
发表于 2018-11-20 16:20:15 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2018-11-20 19:18 编辑

[已解决]ping某个不存在的ip,禁用网卡和不禁用,for耗费时间如何保证大致相同?

禁用网卡,耗费时间大约是10秒。
不禁用网卡,耗费时间大约60秒。

如何修改代码,保证这2种情况下,for循环,持续耗费时间都是大约60秒或者120秒?
  1. @echo off & setlocal enabledelayedexpansion

  2. set servip1=192.168.32.60

  3. cls
  4. echo %time%
  5. pause

  6. for /l %%m in (1,1,10) do (

  7. ping 127.0.0.1 -n 2 >nul 2>nul
  8. ping !servip1! -n 1

  9. echo !errorlevel!
  10. if !errorlevel! equ 0 goto :neta

  11. echo 外网不通
  12. 1pause
  13. )

  14. echo %time%
  15. echo 外网不通,持续x分钟
  16. pause
  17. cls

  18. :neta
  19. echo 外网通畅
  20. pause
复制代码
下面代码,测试分别是60秒,650秒。
  1. for /l %%m in (1,1,60) do (


  2. ping !servip1! -n 2

  3. echo !errorlevel!
  4. if !errorlevel! equ 0 goto :neta

  5. echo 外网不通
  6. 1pause

  7. )
复制代码
发表于 2018-11-20 16:47:10 | 显示全部楼层
本帖最后由 hlzj88 于 2018-11-20 17:22 编辑

以前也没有注意过ping不通的时间有多久,刚才试了的确是长些。
你的代码可以这样更少些
  1. @echo off
  2. ping /n 3 192.168.32.60>nul 2>nul&&set p=0&&echo 网通&&goto a || set /a p+=10&&echo 网不通 持续时间%p%秒&&goto b

  3. :a
  4. 你的意图
  5. :b
  6. 你的意图
复制代码
 楼主| 发表于 2018-11-20 16:51:12 | 显示全部楼层
本帖最后由 ygqiang 于 2018-11-20 16:52 编辑

回复 2# hlzj88


    你好。主要需求是:循环持续ping 60或者120秒,始终ping不通就goto a
如果中间发现ping通了,一般就会持续ping通的,这个就可以马上goto b

关键是:是否禁用网卡,ping耗费的时间还有比较大的差别。
发表于 2018-11-20 17:24:35 | 显示全部楼层
回复 3# ygqiang

二楼已修改
你的意图是什么真不明白。是否禁用网卡以及引起的时间长短问题,没有考虑过,应该是系统自身的运行机制决定的,不排除有解。不是我能考虑和解决的。
 楼主| 发表于 2018-11-20 19:15:42 | 显示全部楼层
本帖最后由 ygqiang 于 2018-11-20 21:36 编辑

最终解决代码。
  1. @echo off & setlocal enabledelayedexpansion

  2. set servip1=192.168.32.61

  3. cls
  4. echo %time%
  5. 1pause

  6. echo ....................................................>>1.txt
  7. echo %time%>>1.txt
  8. echo ....................................................>>1.txt

  9. set ns=0
  10. rem 显示开始时间
  11. set time1=%time%
  12. echo 当前时间是%time1%
  13. call :time2sec %time1%
  14. set t1=%ns%
  15. 1pause
  16. cls

  17. echo 设置时间间隔(秒)
  18. set timebiao=120

  19. :timnext
  20. for /l %%m in (1,1,2) do (
  21. ping !servip1! -n 1
  22. echo !errorlevel!
  23. if !errorlevel! equ 0 goto :neta
  24. echo 外网不通
  25. 1pause
  26. )

  27. rem 显示结束时间
  28. set time2=%time%
  29. echo 当前时间是%time2%
  30. call :time2sec %time2%
  31. set t2=%ns%

  32. rem 计算时间差
  33. set /a tdiff=%t2%-%t1%
  34. echo 间隔%tdiff%秒>>1.txt

  35. 1pause

  36. if %tdiff% LSS %timebiao% goto :timnext

  37. echo %tdiff%
  38. echo %time%
  39. echo 外网不通,持续x分钟
  40. 1pause

  41. cls

  42. echo =================================>>1.txt
  43. echo =================================>>1.txt
  44. echo =================================>>1.txt
  45. echo =================================>>1.txt

  46. exit

  47. :neta
  48. echo 外网通畅
  49. 1pause


  50. echo =================================>>1.txt
  51. echo okokokokokokokokokokokokokokokoko>>1.txt
  52. echo okokokokokokokokokokokokokokokoko>>1.txt
  53. echo =================================>>1.txt

  54. exit


  55. :time2sec
  56. rem 将时间转换成秒数,保存到ns中
  57. set tt=%1
  58. set hh=%tt:~0,2%
  59. set mm=%tt:~3,2%
  60. set ss=%tt:~6,2%
  61. set /a ns=(%hh%*60+%mm%)*60+%ss%
  62. goto :eof
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:28 , Processed in 0.018313 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表