2016-12-20 7 views
1

netsh wlan connect name="your network_name"を使用すると、WiFiネットワークへの接続をリクエストできますが、接続されているかどうかはわかりません。バッチを使用して、WiFiネットワークに接続しているかどうかを判断する方法は?

バッチでは、WiFiネットワークに接続されているかどうかを確認するコマンドラインは何ですか?接続している場合、それはYESが表示されるはずです

(WiFiネットワークは、あるいはない場合があり、ネットワークアクセスを持っている。)が接続されていない場合は

、それはNOが表示されます、[それは、あまりにもモバイルホットスポットのために働く必要があります] 、

私が得た結果に応じてループを実行したいからです。

誰かが良い作業用バッチプログラムを書くことができます!私が試してみました何とC++(あまりにも可能な場合)

:私たちは、ループあれば入れカント

WMIC /node: ”PutYourPCNameHere” path WIN32_NetworkAdapter where (NetConnectionID="Wi-Fi") get NetConnectionStatus 

けど。だから私は知りませんどのように進める!

@echo off 
ECHO Checking connection, please wait... 
PING -n 1 www.google.com|find "Reply from " >NUL 
IF NOT ERRORLEVEL 1 goto :SUCCESS 
IF  ERRORLEVEL 1 goto :TRYAGAIN 

:TRYAGAIN 
ECHO FAILURE! 
ECHO Let me try a bit more, please wait... 
@echo off 
PING -n 3 www.google.com|find "Reply from " >NUL 
IF NOT ERRORLEVEL 1 goto :SUCCESS2 
IF  ERRORLEVEL 1 goto :TRYIP 

:TRYIP 
ECHO FAILURE! 
ECHO Checking DNS... 
ECHO Lets try by IP address... 
@echo off 
ping -n 1 216.239.37.99|find "Reply from " >NUL 
IF NOT ERRORLEVEL 1 goto :SUCCESSDNS 
IF  ERRORLEVEL 1 goto :TRYROUTER 

:TRYROUTER 
ECHO FAILURE! 
ECHO Lets try pinging the router.... 
ping -n 2 192.168.1.1|find "Reply from " >NUL 
IF NOT ERRORLEVEL 1 goto :ROUTERSUCCESS 
IF  ERRORLEVEL 1 goto :NETDOWN 

:ROUTERSUCCESS 
ECHO It appears that you can reach the router, but internet is unreachable. 
goto :FAILURE 

:NETDOWN 
ECHO FAILURE! 
ECHO It appears that you having network issues, the router cannot be reached. 
goto :FAILURE 

:SUCCESSDNS 
ECHO It appears that you are having DNS issues. 
goto :FAILURE 

:SUCCESS 
ECHO You have an active Internet connection 
pause 
goto END 

:SUCCESS2 
ECHO You have an active internet connection but some packet loss was detected. 
pause 
goto :END 

:FAILURE 
ECHO You do not have an active Internet connection 
pause 
goto :END 

:END 

が、これは(インターネットなし)モバイルホットスポット経由で動作するように失敗した

+0

を私のCMDチートシートを参照してください。 'netsh wlan show /? 'を参照してください。 –

+0

しかし、私はそれが仲間と条件を使用することはできません。 –

+2

"誰かが良いバッチプログラムを書くことができます!!そしてC++(可能ならば可能です)_" - SOはコーディングサービスではありません。あなたが試したことと正確にあなたが立ち往生している場所を表示してください(現在、あなたの質問はC++ではなくbashだけです) –

答えて

2
C:\Windows\system32>netsh wlan show interfaces 

There is 1 interface on the system: 

    Name     : Wi-Fi 
    Description   : Realtek RTL8723BE 802.11 b/g/n Wi-Fi Adapter 
    GUID     : 6383a702-c44d-465e-8f5d-e7b3bc52b300 
    Physical address  : 18:4f:32:35:3b:1d 
    State     : connected 
    SSID     : OptusWiFi E5331 0afa 
    BSSID     : d0:7a:b5:8a:0a:fa 
    Network type   : Infrastructure 
    Radio type    : 802.11n 
    Authentication   : WPA2-Personal 
    Cipher     : CCMP 
    Connection mode  : Profile 
    Channel    : 6 
    Receive rate (Mbps) : 72 
    Transmit rate (Mbps) : 72 
    Signal     : 93% 
    Profile    : OptusWiFi E5331 0afa 

    Hosted network status : Not available 


C:\Windows\system32>netsh wlan show interfaces 

There is 1 interface on the system: 

    Name     : Wi-Fi 
    Description   : Realtek RTL8723BE 802.11 b/g/n Wi-Fi Adapter 
    GUID     : 6383a702-c44d-465e-8f5d-e7b3bc52b300 
    Physical address  : 18:4f:32:35:3b:1d 
    State     : disconnected 
    Radio status   : Hardware On 
          Software Off 

    Hosted network status : Not available 

が接続されており、接続されていない、二つの状態の出力です。

したがって、出力にSignalが表示されている場合は、接続されているかどうかが示されます。

C:\Windows\system32>netsh wlan show interfaces | Findstr /c:"Signal" && Echo Online || Echo Offline 
Offline 

C:\Windows\system32>netsh wlan show interfaces | Findstr /c:"Signal" && Echo Online || Echo Offline 
    Signal     : 93% 
Online 

&&||は速記ifコマンドです

あなたが接続されているかを示しinterfaces` `NetShのWLANショーここCommand to run a .bat file

+0

スーパー!仲間!使用を得ました!なぜrはこれを使わないのですか?netsh wlan show interfaces | Findstr/c: "connected" && Echo Online ||エコーオフライン –

+0

出力のどこにでも接続された単語が表示されません。 (それは '切断された'にあります)。 –

+0

それは仲間を得た!どうもありがとう!私は助けが必要な場合連絡する方法はありますか? –

関連する問題