首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回波%var%打印FINDSTR参数

回波%var%打印FINDSTR参数
EN

Stack Overflow用户
提问于 2014-02-16 03:11:26
回答 2查看 468关注 0票数 0

我目前正在制作一个bat脚本,以ping一个主机,并返回Packetloss百分比和avg。

我用/f来获得结果。

唯一的问题是,分组丢失和avg ms在两条不同的线路上。

为此,我使用子调用和findstr为每个变量设置一个变量。

但是,当im再次尝试调用变量时,它包含findstr命令的所有参数。

我能做什么?

下面是代码:

代码语言:javascript
复制
@echo off
SETLOCAL
SET PingCMD=ping.exe -w 300 -n 1 127.0.0.1
FOR /f "tokens=3,6,9,10,11,12 delims=," %%A IN ('%PingCMD%') DO (

    call :GetLoss %%A
    call :GetAvg %%A

)
echo PacketLoss %loss%  Average %avg%
pause


:GetLoss
SET loss=%1 %2 %3 %4 ^| findstr "loss tab"
GOTO :eof

:GetAvg 
SET avg=%1 %2 %3 ^| findstr "Average Gennemsnit average gennemsnit"
GOTO :eof
EndLocal
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-16 04:05:56

代码语言:javascript
复制
@ECHO OFF
SETLOCAL
SET PingCMD=ping.exe -w 300 -n 1 127.0.0.1
FOR /f "tokens=3,6,9,10,11,12 delims=," %%A IN ('%PingCMD%') DO (

    call :GetLoss %%A
    call :GetAvg %%A

)
echo PacketLoss %loss%  Average %avg%
PAUSE
GOTO :eof


:GetLoss
IF "%1"=="Lost" SET loss=%2
GOTO :eof

:GetAvg 
IF "%1"=="Average" SET avg=%2
GOTO :EOF

翻译是你的宝贝..。

票数 2
EN

Stack Overflow用户

发布于 2014-02-16 09:05:30

代码语言:javascript
复制
@echo off

    setlocal enabledelayedexpansion

    set "pingCMD=ping -w 300 -n 1 127.0.0.1"
    set "pct="
    set "avg="
    for /f "tokens=*" %%a in ('%pingCMD% ^| findstr /n /r /c:"([0-9]*%%" /c:"= [0-9]*ms" ') do (
        if not defined pct (
               for /f "tokens=2 delims=(%%"  %%b in ("%%a") do set "pct=%%b"
        ) else ( for /f "tokens=7 delims=,= " %%b in ("%%a") do set "avg=%%b" )
    )
    echo %pct% %avg%

在google图片中搜索后,我发现德国ping输出将百分比放在单独的一行中。这种情况在我的西班牙语本地化窗口中也会出现,但在英语窗口中就不会出现这种情况。

当本地化更改行时,首先for | findstr使用所需的数据查找这两行。然后,根据行的不同,使用另一个for在需要的地方拆分行。在这一刻,我不能用另一种语言来测试它,但是这应该可以在很少的变化下起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21806810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档