ping的批处理文件编写

做为一名网络工程师,经常要测试某地网络的好坏,而最直接的命令就是ping,但是一次ping好多天,而且每隔一段时间就要ping和tracert,使工作繁琐麻烦,所以就需要学习一些简单的批处理了。
下面跟懒人简单介绍一下ping的批处理文件编写。
首先,在电脑的任一个地方,(我习惯在桌面)新建一个文本文档,打开之后写入下面语句
date/t >>c:test.txt  (显示日期,并重定向写入到c盘下text.txt下)
time/t >>c:test.txt  (显示时间,并重定向写入到c盘下text.txt下)
ping -n 50 192.168.1.1 >>c:test.txt  (执行ping命令,ping地址192.168.1.1总共50个包,然后写入c盘下test.txt文件中)
tracert 192.168.1.1 >>c:test.txt (执行tracert命令,tracert地址192.168.1.1,并写入c盘下的test.txt文件中)
然后,写入以上简单的命令后保存退出,并重命名刚才的文本文档,要以后缀名bat结尾(注:该文件不要重命名为ping.bat,否则容易陷入DOS循环。原因:DOS内部命令与批文件重名,会陷入DOS循环)

那如何让批处理文件每隔一定的时间执行一次呢!
只需要在用GOTO即可;举例如下:
@echo off
:main
ping 192.168.1.1 >>c:test.txt
ping -n 60 127.1>nul&goto main
(其中goto就是跳转的意思,60就是大约60秒;大概的意思应该就是执行ping命令,执行完60秒以后重新跳转到开始继续执行ping命令,其中60秒的时间可以修改)

大家都知道如果ping某个地址50个包,然后重定向到文本中,从文本查看的时候,我们有时只需要查看丢包率和延时,其中50个包的往返信息都没用,如何将那些没用的信息去掉呢!
下面需要用到管道符|find命令;还是举例如下:
ping 192.168.1.1 |find /v "Request timed out"|find /v "Reply from">>c:test.txt
(其中管道符|的意思是将上一命令执行的结果传递给下一命令去处理;find是查找的意思,/v是find的参数,意思是显示所有未包含指定字符串的行,其中find还有其他参数如下
/V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。 /OFF[LINE] 不要跳过具有脱机属性集的文件。
上面一句总的意思是将ping 192.168.1.1输出的结果剔除有Request timed out和Reply from的行,再将结果保存到test.txt文件中)

下面写一个简单的批处理文件供大家参考
@echo off :main date/t >>d:a.txt time/t >>d:a.txt
date/t >>d:t.txt time/t >>d:t.txt ping -n 5 192.168.100.1 |find /v "Request timed out"|find /v "Reply from">>d:a.txt tracert 192.168.100.2 >>d:t.txt echo -------------------------------------------------------------------------------- >>d:a.txt echo -------------------------------------------------------------------------------- >>d:t.txt ping -n 3600 127.1>nul&goto main

接下来再给同行介绍一个ping某一地址段的批处理文件:
for /l %p in (1,1,101) do @ping 192.168.0.%p -n 1 >>c:test.txt
意思是:ping192.168.0段的地址,从192.168.0.1开始ping,每隔1个IPping一个包,一直ping到192.168.0.101,然后将结果保存到c盘下的test.txt文件中。
以上为学习中的简单总结,希望能帮到同行们,如有问题请留言。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章