2013-01-21 107 views
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。但爲此,我需要擺脫142ms%b)中的ms。我該怎麼辦?

回答

3

使用延遲擴展與

​​

和環路內分配給一個臨時變量:

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

,然後使用!avg!

1

你必須不做任何事情(只要消除IF命令中的/ I開關)。由於數字也是字符串,就可以直接做所需要的比較,並得到正確的結果:

時,平均恰恰是300ms的
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 

唯一的問題發生,但這種情況下,就可以輕鬆解決的值更改爲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 

Antonio