batch-file - 使用 findstr 获取丢包的更好方法,批量

标签 batch-file ping findstr

希望使用 findstr 使其在 ping 命令后找到“0% 损失”。 也许是一系列高达“50% 的损失”。

这是为了检查并确保在发布在线内容之前 100% 建立互联网连接。

目前它是结构化的:

ping %ip% -n 3 -w 3000 | findstr "0% loss"
pause
goto Starting

它目前正在忽略 findstr,无论它拒绝找到我要找的东西

理想情况下它会像这样流动:

ping %ip% -n 3 -w 3000 | findstr "0% loss" || goto Echo
pause
goto Starting
:echo
Could not find "0% loss"
pause

我已经尝试过了,它会回显,但即使是 100% 连接,所以它显然没有按照我希望的方式运行。

是否有更好的方法来查找丢包百分比?

或者

如果设备完全离线时 ping 不起作用,是否有更好的方法来测试互联网连接。

最佳答案

您要查找的搜索字符串太宽泛。当您检查 findstr 是否有“0% 损失”时,您也无意中发现了“100% 损失”。幸运的是,ping 将数据包丢失放在括号中,因此您可以简单地将左括号包含在搜索字符串中。

@echo off
title Restart
color 0A
cls

:start
Cls
set ip=www.google.com

:Pingcheck
echo Checking ping..
timeout /t 3
ping %ip% -n 5 -w 3000 | findstr /C:"(0% loss" || goto Loss
pause

:NoLoss
echo We found 0 packet loss, at %ip% on %date% at %time%
pause
goto start

:Loss
echo We found some packet loss.
pause

我还更改了 :Echo 标签的名称,因为 echo 已经是一个命令,将它也作为标签会造成混淆。

关于batch-file - 使用 findstr 获取丢包的更好方法,批量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45260785/

相关文章:

windows - WEVTUtil 导出特定事件

for-loop - (%*) 在批处理 for 循环中意味着什么?

ruby-on-rails - 从访客到主机的 Vagrant ping 或 curl

windows - 如何使用 FINDSTR 仅获取匹配模式的行号

batch-file - 在 Notepad++ 中打开文本文件的批处理脚本

c# - 删除文件扩展名批处理或 c#

java - 字符串操作: Taking numbers out of a string in java?

c++ - 不要用 system() 打开控制台输出

batch-file - Grep 批量 ping

string - Powershell在找到另一个字符串后提取字符串