スクリプトを 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 分ごとに切断されるわけではありませんが、ストリーミング中やダウンロード中に問題が発生する可能性があります。