これは直接あなたが探しているものではないかもしれませんが、私は同様のタスクを持っていました:pingを実行し、成功または失敗を報告します。IPアドレスの抽出はあなたに任せます-あなたがすでにそれを行っているのを見てください。
pingの問題は、名前解決時に成功を返すことです。パケットが失われたか、ホストに到達できないか(0%の損失が報告されます)は関係ありません。
FOR %%a IN (
google.com
a.b.c.d
) DO @FOR /F "delims=" %%p IN (
'PING -w 100 -n 1 %%a ^| findstr ^"Reply Request fail name^"'
) DO @(
ECHO "%%p" | FINDSTR TTL >2 && echo %%a, success, %%p || echo %%a, failed, %%p
) >> Results.csv
ロジック:一度pingを実行し、リストされている単語の1つを含む行のみをフィルタリングします。結果のラインにTTLが存在する場合(出力の汚染を回避するためにSTDERRまたはNULに出力)、エコーは成功します。それ以外の場合、エコーは失敗します。
私は英語のWindowsを使用していますが、他の言語に合わせて単語を調整する必要があります。
編集:
FOR %%a IN (
google.com
a.b.c.d
) DO @FOR /F "delims=" %%p IN ('PING -n 1 %%a ^| findstr TTL ^|^| echo Failed') DO @(
ECHO "%%p" | FINDSTR TTL >2 && (for /f "tokens=3" %%b IN ("%%p") do @echo %%a, %%b) || echo %%a, failed, %%p
)
言語への依存度が低く、IPv4でのみ機能し、IP抽出が追加されています。TTLのping出力をフィルタリングし、TTLが見つからない場合は出力を「失敗」に設定します。出力文字列にTTLが含まれている場合は、IPを抽出し、ホストとIPをエコーします。それ以外の場合は、ホスト名と出力文字列をエコーします。