Windows で cmd を使用して pppoe がすでに接続されているかどうかを確認する方法を教えてください。

Windows で cmd を使用して pppoe がすでに接続されているかどうかを確認する方法を教えてください。

スクリプトを 5 分ごとに実行するようにスケジュールしたので、自動 Wi-Fi 接続と PPPoE 接続を実現しました。そのため、すでに接続されている場合は、実行時に Wi-Fi が切断されます。スクリプトの実行時に、最初に PC が特定の WLAN プロファイル名に接続されているかどうかを確認し、その後すぐに PPPoE が接続されているかどうかを確認します。PPPoE が接続されている場合は、サイトに ping を実行してインターネットが利用可能かどうかを確認します。インターネットが利用可能な場合はそのままにします。そうでない場合は、Wi-Fi が接続されていないため、スクリプトのように同じプロセスを繰り返すようにします。

netsh wlan connect name=Fursan-WIFI-03049815768
rasdial MikroTik_PPPoE admin thedarkforce 
rasdial MikroTik_PPPoE /d
rasdial MikroTik_PPPoE admin thedarkforce 

これを if ループとして実行できると思いますが、Windows でループをスクリプト化する方法がよくわかりません。どうすればいいでしょうか?

答え1

その前に PING テストを追加できます。信頼性がどの程度かはわかりませんが、とにかく呼び出すよりも確実に信頼性が高くなります。

set ipToTest=8.8.8.8
ping -n 1 %ipToTest% | find "TTL"
if %errorlevel% == 1 (
    netsh wlan connect name=Fursan-WIFI-03049815768
    if %errorlevel% == 1 (
        netsh wlan connect name=DIFFERENT_NETWORK_HERE
    )
    rasdial MikroTik_PPPoE admin thedarkforce 
    rasdial MikroTik_PPPoE /d
    rasdial MikroTik_PPPoE admin thedarkforce 
)

テストとして Google の DNS を使用していますが、任意の IP に変更できます。これにより、何らかの理由で PING が失敗した場合にのみコマンドが実行されます。

個人的には、これはあまり良い解決策ではないと思います。接続が頻繁に切断されるようなことは、この処置を正当化するほどではないはずです。どこかで何かを交換または修理する必要があるようですが、これは応急処置に過ぎず、この変更により 5 分ごとに切断されるわけではありませんが、ストリーミング中やダウンロード中に問題が発生する可能性があります。

関連情報