BATスクリプト:ネットワークの安定度を検知してコマンド結果を取得するping方式、行を指定する方式、可変内容をtxtファイルに追記する方式

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

解析:

  1. skip=2: 最初の 2 行をスキップします。3 行目が必要だからです。
  2. delims=;: 区切り文字を , のように指定します;。**デフォルトはスペースと TAB です。**なのでここでは削除できず、;結果がないので書いただけで、分割する必要はありません。分割する必要がある場合は、協力してtokens=必要な部分を選択できます。
  3. goto nextAnd :next: do once で内容を実行した後、ループから飛び出すために使用します。それ以外の場合、 for は常にトラバースし、結果が必要な 3 行目ではなく、最後の行になります。

変数コンテンツを txt ファイル メソッドに追加する

echo %result%>>%filePath%

解析:

  1. result変数です
  2. filePathファイルパスです
    。 このフォーマットによれば、パスに対応するファイルの末尾に変数の内容を書き込むことができます。

参考文献

バットで /f の任意の行を傍受する方法

おすすめ

転載: blog.csdn.net/Reven_L/article/details/127676529