用批处理查询网吧网络是否稳定,并替换Ping提示语为自自定义的

需求:

自定义一个自己的ping命令来查询网吧网络是否正常。把ping结果里面的信息替换成自定义的信息。利用网吧批处理查询当前时间100秒内的网吧网络(外网/内网)目前是否卡顿,网络是否正常,有没掉包的现象。

需求分析:

这个目前比较常用的方式是使用ping命令来执行。当然你也可以借助第三方支持命令行的工具来完成这个需求。ping命令支持的参数有哪些,找出我们需求里面要用到的需求。要能满足100秒的需求,那么我ping /?一下(有个技巧,windows系统自带的命令,基本都支持/?的参数来查询参数)


PS C:\Users\Administrator> ping /?

用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]   
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]   
            [-4] [-6] target_name

选项:
    -t             Ping 指定的主机,直到停止。
                   若要查看统计信息并继续操作,请键入 Ctrl+Break; 
                   若要停止,请键入 Ctrl+C。
    -a             将地址解析为主机名。
    -n count       要发送的回显请求数。
    -l size        发送缓冲区大小。
    -f             在数据包中设置“不分段”标记(仅适用于 IPv4)。
    -i TTL         生存时间。
    -v TOS         服务类型(仅适用于 IPv4。该设置已被弃用,
                   对 IP 标头中的服务类型字段没有任何
                   影响)。
    -r count       记录计数跃点的路由(仅适用于 IPv4)。
    -s count       计数跃点的时间戳(仅适用于 IPv4)。
    -j host-list   与主机列表一起使用的松散源路由(仅适用于 IPv4)。
    -k host-list    与主机列表一起使用的严格源路由(仅适用于 IPv4)。
    -w timeout     等待每次回复的超时时间(毫秒)。
    -R             同样使用路由标头测试反向路由(仅适用于 IPv6)。
                   根据 RFC 5095,已弃用此路由标头。
                   如果使用此标头,某些系统可能丢弃
                   回显请求。
    -S srcaddr     要使用的源地址。
    -c compartment 路由隔离舱标识符。
    -p             Ping Hyper-V 网络虚拟化提供程序地址。
    -4             强制使用 IPv4。
    -6             强制使用 IPv6。
100秒的话,咱们可以用-n 100设置回显数为100条。


编码:

通过需求分析后,开始编码,完整批处理代码如下:


@echo off
color f2
echo.
set for=于
set of=的
set with=用
set in=(以
set data:=数据
set milli-seconds:=毫秒为单位)
set Approximate=大约
set 时间=耗费时间
set round=来回
set  TTL=延迟
set   的回复:=马斯克的回答,
set 来自=天下网咖正在呼叫来自火星
set 字节=数据包大小
set time=时间:
set timed=时间
set out=超过
set statistics=统计
set Packets:=包:
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=
set TTL=TTL=
setlocal enabledelayedexpansion
set a=
set/p a=请输入要ping的网址或IP   
echo 正在查询,请稍候...
for /f "delims=" %%i in ('ping %a% -n 100') do (
    set ret=
    for %%a in (%%i) do if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a 
    if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.
)
pause>nul


代码分析:

使用setlocal enabledelayedexpansion来实现变量值延迟的功能是本代码的核心功能,其他的就是替换ping结果字符串的功能。另外需要用到for循环进行每一行结果值里面的字符串的替换。

执行结果截图:

总结:

本代码编码学习价值大于批处理的实际用途,大家在使用时可以直接把里面的用户输入的IP变成自己的固定的网吧DNS的IP,这样不需要输入IP,直接运行批处理,稍等下就能看到结果。

本代码需要学习的是批处理编程的思维。分享出来就是借花献佛让大家举一反三的思考,写出更实用的网维批处理

本文来源:天下网吧 作者:天下码农

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行