実際、Windows ping.exeは意味のあるエラーレベルを返しません(え?)
IPプロトコルスタック自体がホースで接続されていない限り、常に「0」のエラーレベルを返します。
やらなければならないことは、pingの出力をtxtファイルにパイプし、TTL=を「検索」することです
。
ping10.10.10.10。> pingtest.txt
findstr / C: "TTL =" pingtest.txt> nul
if%ERRORLEVEL%equ 0(何でもする)else(echo skipping unreachable host "whatever")
次に、Find.exeまたはFindstr.exeを使用して、出力ファイルでTTL =を検索します
(findとfindstrはどちらも、検索対象を「検索」するときに「0」エラーレベルを使用することに注意してください)
。理由はありますが、「TTL=」は常に成功したping2の一部です
。最初の1つまたは2つで問題が発生することがあるため、常に少なくとも-nを3回pingします。これにより、成功する可能性を高めることができます。スキップしてください。
3.これを機能させるには、上記のFORループメソッドを使用する必要があります。生のpsexec.exeには、テキストファイルから呼び出されたターゲットをテスト/スキップする現在の手段がありません。
4. psexecセッションでネットワークリソースを使用する必要がある場合は、「-h」オプションを実行して、ドライブをマップできる昇格されたトークンを取得する必要があります。
これがお役に立てば幸いです。