【问题标题】:How to change a string if the variable is greater than the current如果变量大于当前值,如何更改字符串
【发布时间】:2014-10-13 01:47:31
【问题描述】:

我编写此代码是为了在播放前检查 ping,当较高的 ping 停止正确检测到更改时,值从低 2 位发生变化。

如果有人可以给我一个简单的感谢。

@Echo Off

Title .Bat
Color 1f

FOR /F "tokens=6* delims==, " %%A in ('ping -n 2 br.leagueoflegends.com ^|find "="') do (Cls & Set MaiorPing=%%A & Set MenorPing=%%A & Set PingAtual=%%A)

:Pinges

FOR /F "tokens=6* delims==, " %%A in ('ping -n 2 br.leagueoflegends.com ^|find "="') do (Cls & Set PingAtual=%%A)

if /i %PingAtual% LEQ %Menorping% Set Menorping=%PingAtual%
if /i %PingAtual% GTR %Maiorping% Set Maiorping=%PingAtual%

Echo Current ping: %PingAtual%
Echo Lower ping: %Menorping%
Echo Higher ping: %Maiorping%

goto pinges

【问题讨论】:

  • ping -n 2 br.leagueoflegends.com |find "ximo =" 的实际输出是什么?这对我不起作用,我不确定是不是因为语言设置(我的是 en-us)
  • 抱歉,忘记修复了……已经打补丁了。 (是的,这是因为语言)

标签: batch-file ping


【解决方案1】:

我认为你的问题是比较。由于您没有从数据中删除 ms 后缀,GTRLEQ 操作数处理的是字符串而不是数字,因此,10ms 小于 2ms

@echo off
    setlocal enableextensions disabledelayedexpansion

    title .Bat
    color 1f

    set "target=br.leagueoflegends.com"

    set "lowPing=9999"
    set "highPing=0"

:doPing    
    set "ping="

    for /f "tokens=9" %%a in ('
        ping -n 2 "%target%" ^|find "ms,"
    ') do for /f "delims=m " %%b in ("%%a") do set "ping=%%~b"

    cls

    if not defined ping  (
        echo No response
        goto :doPing
    )

    if %ping% gtr %highPing% set "highPing=%ping%"
    if %ping% lss %lowPing%  set "lowPing=%ping%"

    echo Current: %ping%   Max: %highPing%   Min: %lowPing%

    goto :doPing

添加了一个额外的for 以将数字数据与单位分开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2012-09-01
    • 2010-12-27
    相关资源
    最近更新 更多