------------------------------------代码: ---------------
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
rem 用 for 分析 "netsh interface ip show dns" 指令得出的结果
REM m 作为信息行数计数器
REM n 作为DNS信息块起始行标记器
rem 如果 当前行包含 冒号 时,将 n 赋值为 0
rem 并将当前行被冒号分割的第二部分信息赋值给变量 !DNS!,否则,将第一部分信息赋值给变量 !DNS!
rem 当 冒号 分割的第一部分信息中包含" DNS "字样,将 n 赋值为 M
rem 如此,当 n=0 时表示进入了一个信息模块。
REM 当 n<>0 时表示当前信息模块饱含了 dns 信息,变量!DNS!的内容可用,则调用脚本 p 段代码。
rem 脚本附带 一个参数"debug" ,当执行附带此参数时,运行过程附带显示变量 m n dns 的内容。
title 检测 DNS 畅通情况...
set /A m=0 & set /A n=0
echo 正在获取 DNS 设置....
ECHO.
for /f "delims=" %%c in ('netsh interface ip show dns') do (
set /a m=!m!+1
set l=%%c & set l=!l:"=_!
for /f "tokens=1,2 delims=:" %%f in ("!l!") do (
echo %%c | findSTR /C:":" >nul
if not errorlevel 1 (
set /A n=0 & set "dns=%%g"
ECHO %%f | findstr /C:" DNS " >nul
if not errorlevel 1 set /a n=!m!
) else ( set "dns=%%f" )
)
set dns=!dns: =!
if %1*==debug* ECHO 第*!M!*行: DNS标记=*!n!* DNS=!DNS!
if not !n!==0 call:p
)
)
echo 检测完毕,按任意键退出! & pause >nul
GOTO :eof
:p
ECHO 检测网路 !DNS!..........
ping !DNS! -n 3 >nul
if not errorlevel 1 (echo DNS:[!dns!] 畅通!) else (echo DNS:[!dns!] 不通!)
ECHO.
--------------------代码:--------
@echo off & SETLOCAL ENABLEDELAYEDEXPANSION
title 检测 DNS 畅通情况...
echo 正在获取 DNS 设置....
echo.
for /f "skip=1 delims=} tokens=1" %%c in ('wmic nicconfig get DNSServerSearchOrder') do (
set "l1=%%c"
set "l1=!l1:{=!"
for %%x in (!l1!) do call:p %%~x
)
echo 检测完毕,按任意键退出! & pause >nul
GOTO :eof
:p
ECHO 检测网路 %1..........
ping %1 -n 3 >nul
if not errorlevel 1 (echo DNS:[%1] 畅通!) else (echo DNS:[%1] 不通!)
ECHO.
for /f "tokens=2,*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Security Client" /v "InstallLocation"') do (