标题: [网络连接] [已解决]ping某个不存在的ip,禁用网卡和不禁用,for耗费时间如何保证大致相同? [打印本页]
作者: ygqiang 时间: 2018-11-20 16:20 标题: [已解决]ping某个不存在的ip,禁用网卡和不禁用,for耗费时间如何保证大致相同?
本帖最后由 ygqiang 于 2018-11-20 19:18 编辑
[已解决]ping某个不存在的ip,禁用网卡和不禁用,for耗费时间如何保证大致相同?
禁用网卡,耗费时间大约是10秒。
不禁用网卡,耗费时间大约60秒。
如何修改代码,保证这2种情况下,for循环,持续耗费时间都是大约60秒或者120秒?- @echo off & setlocal enabledelayedexpansion
-
- set servip1=192.168.32.60
-
- cls
- echo %time%
- pause
-
- for /l %%m in (1,1,10) do (
-
- ping 127.0.0.1 -n 2 >nul 2>nul
- ping !servip1! -n 1
-
- echo !errorlevel!
- if !errorlevel! equ 0 goto :neta
-
- echo 外网不通
- 1pause
- )
-
- echo %time%
- echo 外网不通,持续x分钟
- pause
- cls
-
- :neta
- echo 外网通畅
- pause
复制代码
下面代码,测试分别是60秒,650秒。- for /l %%m in (1,1,60) do (
-
-
- ping !servip1! -n 2
-
- echo !errorlevel!
- if !errorlevel! equ 0 goto :neta
-
- echo 外网不通
- 1pause
-
- )
复制代码
作者: hlzj88 时间: 2018-11-20 16:47
本帖最后由 hlzj88 于 2018-11-20 17:22 编辑
以前也没有注意过ping不通的时间有多久,刚才试了的确是长些。
你的代码可以这样更少些- @echo off
- ping /n 3 192.168.32.60>nul 2>nul&&set p=0&&echo 网通&&goto a || set /a p+=10&&echo 网不通 持续时间%p%秒&&goto b
-
- :a
- 你的意图
- :b
- 你的意图
复制代码
作者: ygqiang 时间: 2018-11-20 16:51
本帖最后由 ygqiang 于 2018-11-20 16:52 编辑
回复 2# hlzj88
你好。主要需求是:循环持续ping 60或者120秒,始终ping不通就goto a
如果中间发现ping通了,一般就会持续ping通的,这个就可以马上goto b
关键是:是否禁用网卡,ping耗费的时间还有比较大的差别。
作者: hlzj88 时间: 2018-11-20 17:24
回复 3# ygqiang
二楼已修改
你的意图是什么真不明白。是否禁用网卡以及引起的时间长短问题,没有考虑过,应该是系统自身的运行机制决定的,不排除有解。不是我能考虑和解决的。
作者: ygqiang 时间: 2018-11-20 19:15
本帖最后由 ygqiang 于 2018-11-20 21:36 编辑
最终解决代码。- @echo off & setlocal enabledelayedexpansion
-
- set servip1=192.168.32.61
-
- cls
- echo %time%
- 1pause
-
- echo ....................................................>>1.txt
- echo %time%>>1.txt
- echo ....................................................>>1.txt
-
- set ns=0
- rem 显示开始时间
- set time1=%time%
- echo 当前时间是%time1%
- call :time2sec %time1%
- set t1=%ns%
- 1pause
- cls
-
- echo 设置时间间隔(秒)
- set timebiao=120
-
- :timnext
- for /l %%m in (1,1,2) do (
- ping !servip1! -n 1
- echo !errorlevel!
- if !errorlevel! equ 0 goto :neta
- echo 外网不通
- 1pause
- )
-
- rem 显示结束时间
- set time2=%time%
- echo 当前时间是%time2%
- call :time2sec %time2%
- set t2=%ns%
-
- rem 计算时间差
- set /a tdiff=%t2%-%t1%
- echo 间隔%tdiff%秒>>1.txt
-
- 1pause
-
- if %tdiff% LSS %timebiao% goto :timnext
-
- echo %tdiff%
- echo %time%
- echo 外网不通,持续x分钟
- 1pause
-
- cls
-
- echo =================================>>1.txt
- echo =================================>>1.txt
- echo =================================>>1.txt
- echo =================================>>1.txt
-
- exit
-
- :neta
- echo 外网通畅
- 1pause
-
-
- echo =================================>>1.txt
- echo okokokokokokokokokokokokokokokoko>>1.txt
- echo okokokokokokokokokokokokokokokoko>>1.txt
- echo =================================>>1.txt
-
- exit
-
-
- :time2sec
- rem 将时间转换成秒数,保存到ns中
- set tt=%1
- set hh=%tt:~0,2%
- set mm=%tt:~3,2%
- set ss=%tt:~6,2%
- set /a ns=(%hh%*60+%mm%)*60+%ss%
- goto :eof
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |