2

私は文字列を持っています

Approximate round trip times in milli-seconds:
    Minimum = 133ms, Maximum = 150ms, Average = 142ms

そしてforループ

for /l %%x in (1, 1, 10) do (
    for /f "tokens=7,9" %%a in ('ping -n 10 !ipaddr!') do (
        if "x%%a"=="xAverage" (

7番目のトークン(%a)が「平均」の場合、確認したいと思いif /I %%b GTR 300ます。msしかし、そのためには、 in 142ms( )を取り除く必要があり%bます。私は何をすべきか?

4

2 に答える 2

3

で遅延展開を使用する

setlocal enabledelayedexpansion

ループ内の一時変数に割り当てます。

set avg=%%b
set avg=!avg:ms=!

を使用します!avg!

于 2013-01-21T19:20:06.443 に答える
1

何もする必要はありません (IF コマンドの /I スイッチを削除するだけです)。数値も文字列であるため、目的の比較を直接実行して正しい結果を得ることができます。

if 142ms GTR 300 echo This not appear: 142ms is less than 300
if 350ms GTR 300 echo This appear: 350ms is greater than 300

Average が正確に 300ms の場合に唯一の問題が発生しますが、このケースは値を 301 に変更することで簡単に解決できます。

if 300ms gtr 300 echo This appear but is wrong: 300ms is equal 300, not greater 
if %%b gtr 301 echo OK: This appear when the value is greater 300 in all cases

アントニオ

于 2013-01-22T04:22:01.827 に答える