ping 検出安定スクリプト
@echo off
set filePath=D:/pingRecord.csv
set ping_url=www.baidu.com
set sleep_times=5
:top
echo starting test network...
set times=0
for /f "skip=2 delims=;" %%i in ('ping %ping_url% -n 1') do (
set result=%%i
goto next
)
:next
echo %date% %time% , %result%>>%filePath%
ping -n %sleep_times% 127.1 >nul
goto top
www.baidu.com をテストするドメイン名に置き換えてスクリプトを実行すると、定期的に ping が送信され、結果が D:/pingRecord.csv に記録されます (下図を参照)。
コマンド結果を取得するために指定された line メソッド
ping コマンドは、次のように 3 行目から必要な情報しか取得できないため、3 行目を直接取得する必要があります。
>ping www.baidu.com -n 1
正在 Ping www.a.shifen.com [163.177.151.109] 具有 32 字节的数据:
来自 163.177.151.109 的回复: 字节=32 时间=7ms TTL=49
163.177.151.109 的 Ping 统计信息:
数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 7ms,最长 = 7ms,平均 = 7ms
使用するのはfor /f
、行を横断できるコマンドです。
for /f "skip=2 delims=;" %%i in ('ping %ping_url% -n 1') do (
set result=%%i
goto next
)
:next
解析:
skip=2
: 最初の 2 行をスキップします。3 行目が必要だからです。delims=;
: 区切り文字を , のように指定します;
。**デフォルトはスペースと TAB です。**なのでここでは削除できず、;
結果がないので書いただけで、分割する必要はありません。分割する必要がある場合は、協力してtokens=
必要な部分を選択できます。goto next
And:next
: do once で内容を実行した後、ループから飛び出すために使用します。それ以外の場合、 for は常にトラバースし、結果が必要な 3 行目ではなく、最後の行になります。
変数コンテンツを txt ファイル メソッドに追加する
echo %result%>>%filePath%
解析:
result
変数ですfilePath
ファイルパスです
。 このフォーマットによれば、パスに対応するファイルの末尾に変数の内容を書き込むことができます。