2026年4月16日 星期四

網管命令-一鍵網路健檢_老師版

1. 開啟記事本->貼上以下這段程式碼

2.另存新檔->檔案名稱->一鍵網路健檢_老師版.bat

3.存檔類型->


程式碼

@echo off
setlocal EnableExtensions EnableDelayedExpansion
chcp 65001 >nul
title 一鍵網路健檢(老師版 v2)

set "NODE_IP=10.255.4.1"
set "TEST_DOMAIN=www.google.com"
set "TEST_DNS=8.8.8.8"
set "TEST_IP=8.8.8.8"

set "OK=✅"
set "WARN=⚠️"
set "BAD=❌"

goto :MAIN

:PINGCHECK
set "PING_OK=0"
ping -n 2 -w 800 %~1 >nul 2>nul
if %errorlevel%==0 set "PING_OK=1"
exit /b

:HTTPCHECK
set "HTTP_OK=0"
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"try { $r=Invoke-WebRequest -Uri 'https://www.google.com' -UseBasicParsing -TimeoutSec 8; if($r.StatusCode -ge 200 -and $r.StatusCode -lt 400){ exit 0 } else { exit 2 } } catch { exit 1 }" >nul 2>nul
if %errorlevel%==0 set "HTTP_OK=1"
exit /b

:DNSCHECK
set "DNS_OK=0"
for /f "delims=" %%A in ('nslookup %TEST_DOMAIN% %TEST_DNS% 2^>nul ^| findstr /i /c:"Name:" /c:"Addresses:" /c:"Address:"') do (
  set "DNS_OK=1"
)
exit /b

:MAIN
cls
echo ===============================================
echo   一鍵網路健檢(老師版 v2)
echo   只要看 RESULT 結論就可以
echo ===============================================
echo  時間:%date% %time%
echo  校內節點:%NODE_IP%
echo ===============================================
echo(

set "IPV4="
set "GW="

for /f "tokens=2 delims=:" %%A in ('ipconfig ^| findstr /i "IPv4"') do (
  if not defined IPV4 (
    for /f "tokens=* delims= " %%B in ("%%A") do set "IPV4=%%B"
  )
)
for /f "tokens=2 delims=:" %%A in ('ipconfig ^| findstr /i "Default Gateway"') do (
  if not defined GW (
    for /f "tokens=* delims= " %%B in ("%%A") do set "GW=%%B"
  )
)

echo 【A. 本機資訊】
if defined IPV4 (
  echo   %OK% 本機 IPv4:%IPV4%
) else (
  echo   %BAD% 未取得 IPv4
)
if defined GW (
  echo   %OK% 預設閘道:%GW%
) else (
  echo   %BAD% 未取得預設閘道
)
echo(

echo 【B. 校內網路】
if defined GW (
  call :PINGCHECK %GW%
  if "!PING_OK!"=="1" (
    echo   %OK% 可連到校內閘道
    set "GW_OK=1"
  ) else (
    echo   %BAD% 無法連到校內閘道
    set "GW_OK=0"
  )
) else (
  echo   %BAD% 略過檢查(因為沒有閘道)
  set "GW_OK=0"
)
echo(

echo 【C. 校內節點 %NODE_IP%
call :PINGCHECK %NODE_IP%
if "!PING_OK!"=="1" (
  echo   %OK% 節點有回應
  set "NODE_OK=1"
) else (
  echo   %WARN% 節點無回應
  set "NODE_OK=0"
)
echo(

echo 【D. DNS(Google DNS 8.8.8.8)】
if not defined IPV4 (
  echo   %BAD% 略過檢查(因為未取得 IPv4)
  set "DNSR_OK=0"
) else if not defined GW (
  echo   %BAD% 略過檢查(因為未取得閘道)
  set "DNSR_OK=0"
) else (
  call :DNSCHECK
  if "!DNS_OK!"=="1" (
    echo   %OK% 可透過 Google DNS 解析 %TEST_DOMAIN%
    set "DNSR_OK=1"
  ) else (
    echo   %BAD% 無法透過 Google DNS 解析 %TEST_DOMAIN%
    set "DNSR_OK=0"
  )
)
echo(

echo 【E. 對外連線(8.8.8.8)】
if not defined IPV4 (
  echo   %BAD% 略過檢查(因為未取得 IPv4)
  set "WAN_OK=0"
) else if not defined GW (
  echo   %BAD% 略過檢查(因為未取得閘道)
  set "WAN_OK=0"
) else (
  call :PINGCHECK %TEST_IP%
  if "!PING_OK!"=="1" (
    echo   %OK% 可連到外網 IP %TEST_IP%
    set "WAN_OK=1"
  ) else (
    echo   %WARN% 無法 ping 外網 IP(有些網路會擋 ping)
    set "WAN_OK=0"
  )
)
echo(

echo 【F. 網頁是否可開(HTTPS)】
if not defined IPV4 (
  echo   %BAD% 略過檢查(因為未取得 IPv4)
  set "WEB_OK=0"
) else if not defined GW (
  echo   %BAD% 略過檢查(因為未取得閘道)
  set "WEB_OK=0"
) else (
  call :HTTPCHECK
  if "!HTTP_OK!"=="1" (
    echo   %OK% 可開啟 Google 網頁
    set "WEB_OK=1"
  ) else (
    echo   %BAD% 無法開啟 Google 網頁
    set "WEB_OK=0"
  )
)
echo(

echo ===============================================
echo 【RESULT 結論】
echo -----------------------------------------------

if not defined IPV4 (
  echo   %BAD% 目前電腦沒有取得網路位址
  echo   → 請先確認 Wi-Fi 是否已連線,或網路線是否插好
  goto :ADVICE
)

if not defined GW (
  echo   %BAD% 目前沒有預設閘道,無法正常上網
  echo   → 請先重連 Wi-Fi,或更換網路孔位
  goto :ADVICE
)

if "!GW_OK!"=="0" (
  echo   %BAD% 校內網路連線異常
  echo   → 可先重連網路,若仍失敗請通知資訊組
  goto :ADVICE
)

if "!DNSR_OK!"=="0" (
  echo   %BAD% 網址解析異常(DNS 問題)
  echo   → 可能是 DNS 設定或校內網路服務異常
  goto :ADVICE
)

if "!WEB_OK!"=="0" (
  echo   %BAD% 可連網,但網頁無法正常開啟
  echo   → 可能是防火牆、代理、憑證或外網異常
  goto :ADVICE
)

echo   %OK% 網路整體正常
echo   → 校內網路、DNS、外網、網頁開啟都正常

:ADVICE
echo(
echo 【補充說明】
echo -----------------------------------------------
if "!NODE_OK!"=="0" (
  echo - %WARN% 校內節點 %NODE_IP% 沒回應,可能是節點不回 ping 或不在同網段。
)
if "!WAN_OK!"=="0" if defined IPV4 if defined GW (
  echo - %WARN% 外網 ping 不通,不一定代表不能上網,仍要以 HTTPS 測試為主。
)
echo ===============================================
echo(
pause

 

沒有留言:

張貼留言