2016-12-20 125 views
1

使用netsh wlan connect name="your network_name"您可以請求連接到WiFi網絡,但無法確定您是否已連接。使用批處理,如何確定您是否連接到WiFi網絡?

因此,在批處理中,將檢查我是否連接到WiFi網絡的命令行是什麼? (WiFi網絡可以或可以不具有網絡接入。)還應該爲Mobile的熱點工作太]

如果已連接,它應該顯示YES

如果沒有連接,它應該顯示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顯示interfaces'顯示您連接到了什麼。見'netsh wlan show /?'。 –

+0

但我不能使用,如果條件與它兄弟。 –

+2

「_So有人可以編寫好的工作批處理程序!!和C++(如果可能的話)_」 - SO不是一個代碼服務。顯示你已經嘗試了什麼,以及你在哪裏被卡住(目前,你的問題只涉及bash,而不是C++) –

回答

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命令

看到這裏Command to run a .bat file

+0

超級!兄弟!有用!但爲什麼不使用這個:netsh wlan show interfaces | Findstr/c:「已連接」&& Echo Online ||回聲離線 –

+0

我看不到輸出中任何地方連接的字。 (它在'斷開')。 –

+0

明白了!非常感謝!如果我需要幫助,有什麼方法可以聯繫嗎? –

相關問題