0

私はこのボードの最近のメンバーであり、一般的なバッチ ファイル プログラミングです。こんにちは!

数日間、次のスクリプトを試してみましたが、成功はまちまちでした。

@エコーオフ

FOR /f "tokens=3 delims=^:^(" %%G In ('PING "hostname.com"') DO (Echo %%G)

このスクリプトの目的は、ホストに ping を送信し、Ping の概要から (N% の損失) 内の数値 (N) を解析することです。スクリプトはそれを行いますが、数値の代わりに、整数だけでなく「N% 損失)」を取得します。なぜこれが起こるのか、スクリプトがパーセンテージの整数のみを出力し、他の文字を出力しないようにする方法に興味があります。このバッチ ファイルは Win7 で実行されています

4

2 に答える 2

2

括弧が問題を引き起こしています。しかし、それに到達する前に... 興味のある行の後に「:」が含まれている行がないため、たまたま機能しているだけです。FIND を使用して識別し、"loss" という単語 (大文字と小文字を区別しない) を含む行のみを調べます。コマンドで引用符を使用しているため、「usebackq」が必要です。以下の「SET Scratch」行は括弧を取り除きます。

@Echo OFF
FOR /f "usebackq tokens=3* delims==" %%G In (`PING hostname.com ^| FIND /I "loss"`) DO SET Scratch=%%H
SET Scratch=%Scratch:(=%
SET Scratch=%Scratch:)=%
FOR /f "tokens=2" %%G In ('echo.%Scratch%') DO SET Percent=%%G
ECHO.%Percent:~0,-1%
于 2013-03-21T01:38:27.580 に答える