标题: [网络连接] 【已解决】怎么提高代码容错性简化错误的输出 [打印本页]
作者: ads350668398 时间: 2016-11-9 16:24 标题: 【已解决】怎么提高代码容错性简化错误的输出
本帖最后由 ads350668398 于 2016-11-12 09:47 编辑
- echo &setlocal enabledelayedexpansion
- :a
- setlocal enabledelayedexpansion
- @ping /n 1 127.0.0.1>nul
- for /f "tokens=3 delims==" %%i in ('ping %random:~1,2%.%random:~1,2%.%random:~1,2%.%random:~1,2% -n 2 -l 888^|find "TTL"') do (set TTL=%%i)
- @ping /n 1 127.0.0.1>nul
- set ms=%ttl:~0,-6%
- @ping /n 1 127.0.0.1>nul
- echo %ms% >>ms.txt
复制代码
输出:
~0,-6
~0,-6
~0,-6
~0,-6
557
557
557
557
557
79
79
79
79
79
39
39
39
39
39
怎么会有这样的结果??
作者: ads350668398 时间: 2016-11-9 21:37
pcl_tes 新手 请多包涵
作者: GNU 时间: 2016-11-10 09:08
ping一个不存在的IP地址时,find "TTL"找不到这个关键字,导致set TTL=%%i这个变量取不到值。
作者: GNU 时间: 2016-11-10 09:15
加个判断试试- @echo off
- setlocal enabledelayedexpansion
- >ms.txt type nul
- :loop
- set "TTL=null"
- ping /n 1 127.0.0.1 >nul
- for /f "tokens=3 delims==" %%i in ('ping !random:~1,2!.!random:~1,2!.!random:~1,2!.!random:~1,2! -n 2 -l 888 ^| find "TTL"') do (
- set TTL=%%i
- )
- if "!TTL!" equ "null" (
- goto :loop
- )
- ping /n 1 127.0.0.1 >nul
- set ms=!TTL:~0,-6!
- ping /n 1 127.0.0.1 >nul
- >>ms.txt echo,!ms!
- goto :loop
复制代码
作者: CommandBatCmd 时间: 2016-11-10 11:02
规避 time<1ms 的情况:- @echo off&setlocal enabledelayedexpansion
- :a
- set ip=!random:~1,2!.!random:~1,2!.!random:~1,2!.!random:~1,2!
- (for /f "eol= tokens=3 delims==<" %%i in ('ping %ip% -n 2 -l 888') do (
- set "ms=%%i"&set /p"=!ms:~0,-6!"<nul>>ms.txt&echo;>>ms.txt&goto :a
- )
- )||(ping 127.0.0.1 -n 1 >nul 2>nul&goto :a)
复制代码
测试- @echo off&Title 测试&setlocal enabledelayedexpansion
- :a
- set ip=!random:~1,2!.!random:~1,2!.!random:~1,2!.!random:~1,2!
- (for /f "eol= tokens=3 delims==<" %%i in ('ping %ip% -n 2 -l 888') do (
- set "ms=%%i"&set /p"=!ms:~0,-6! %ip%"<nul>>ms.txt&echo;>>ms.txt
- set /a b+=1&Title %ip% !b!个地址&goto :a
- )
- )||(set /a a+=1&Title %ip% !a!个失效&ping 127.0.0.1 -n 1 >nul 2>nul&goto :a)
复制代码
作者: ads350668398 时间: 2016-11-10 11:55
回复 4# GNU
谢谢 哈 会不会 有这样一种 情况 IP不同 但是 延迟是一样的呢 1
你怎么把惊叹号改了半分号了??
作者: GNU 时间: 2016-11-10 12:06
回复 6# ads350668398
C:\>ping 300.300.300.300
Ping request could not find host 300.300.300.300. Please check the name and try again.
IP不通的情况下根本没有TTL这个关键字啊
什么是半分号?
作者: ads350668398 时间: 2016-11-10 12:23
回复 5# CommandBatCmd
2个IP不一样但是延迟又一样的可能 这个时候...
作者: ads350668398 时间: 2016-11-10 12:31
回复 7# GNU
不知道怎么
例如 ping 完ip 10 延迟 66秒 接着 ping 的IP 20 延迟 66秒 ..这样的出现会不会 只显示1个66秒呢
作者: CommandBatCmd 时间: 2016-11-10 19:22
回复 8# ads350668398
这种情况在意料中,要排除重复的延迟,加一个变量储存当前的延迟,
到下一次时,与这个变量比较,相同就跳过,不同就重新给这个变量赋值。
这样循环的结果中就不存在重复的延迟值。
作者: ads350668398 时间: 2016-11-25 12:52
回复 4# GNU
>ms.txt type nul
这一行是不是吧空内容复制到 文件里面啊 这样做有啥用啊 去掉行不行a ??
作者: GNU 时间: 2016-11-27 20:37
回复 11# ads350668398
作用是创建一个空文件
行不行的问题自己试试就知道啦
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |