[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 Echo11 于 2022-11-8 09:01 编辑

稍微改了下,增加了对4次全部丢失的情况的处理。
  1. @ECHO off
  2. ECHO.提示:netsh 需要管理员权限,请以管理员权限运行本脚本.
  3. setlocal EnableDelayedExpansion
  4. SET "IP1="
  5. SET "IP2="
  6. SET "IP3="
  7. ECHO.请稍等...&ECHO.
  8. CALL :PingDNS 223.5.5.5
  9. CALL :PingDNS 114.114.114.114
  10. CALL :PingDNS 180.76.76.76
  11. CALL :PingDNS 119.29.29.29
  12. CALL :PingDNS 8.8.8.8
  13. ECHO.执行以下命令:
  14. IF defined IP1 netsh int ip add dns "WLAN" %IP1% index=1
  15. IF defined IP2 netsh int ip add dns "WLAN" %IP2% index=2
  16. IF defined IP3 netsh int ip add dns "WLAN" %IP3% index=3
  17. pause
  18. GOTO:EOF
  19. :PingDNS <dnsIP>
  20. for /f "tokens=1-9 delims==m " %%a in ('ping -n 4 %~1 ^| find "平均"') do ECHO.%~1 的平均时间:%%fms&SET %~1_time=%%f
  21. REM 对于4次全部丢失的,不显示平均时间,故直接丢弃
  22. IF not %errorlevel%==0 ECHO.%~1 全部丢失!&GOTO:EOF
  23. CALL :CMP %~1
  24. GOTO:EOF
  25. :CMP <IP>
  26. IF not defined IP1 SET "IP1=%~1"&EXIT /B 1
  27. IF not defined IP2 SET "IP2=%~1"&EXIT /B 2
  28. IF not defined IP3 SET "IP3=%~1"&EXIT /B 3
  29. IF !%~1_time! LSS !%IP1%_time! SET "IP3=%IP2%"&SET "IP2=%IP1%"&SET "IP1=%~1"&EXIT /B 1
  30. IF !%~1_time! LSS !%IP2%_time! SET "IP3=%IP2%"&SET "IP2=%~1"&EXIT /B 2
  31. IF !%~1_time! LSS !%IP3%_time! SET "IP3=%~1"&EXIT /B 3
  32. EXIT /B 0
复制代码

TOP

本帖最后由 Echo11 于 2023-2-6 09:29 编辑

回复 5# 22123

不好意思,好久没来论坛了,刚看见回复。 之前排序确实没仔细验证。

已验证排序问题
已验证全部丢失提示问题。
  1. @ECHO off
  2. ECHO.提示:netsh 需要管理员权限,请以管理员权限运行本脚本.
  3. setlocal EnableDelayedExpansion
  4. SET "IP1="
  5. SET "IP2="
  6. SET "IP3="
  7. ECHO.请稍等...&ECHO.
  8. CALL :PingDNS 223.5.5.5
  9. CALL :PingDNS 180.76.76.76
  10. CALL :PingDNS 119.29.29.29
  11. CALL :PingDNS 114.114.114.114
  12. CALL :PingDNS 8.8.8.8
  13. ECHO.&ECHO.前3名 dns 为:
  14. ECHO. 1. %IP1% !%IP1%_time!ms
  15. ECHO. 2. %IP2% !%IP2%_time!ms
  16. ECHO. 3. %IP3% !%IP3%_time!ms
  17. ECHO.&ECHO.执行dns设置命令...
  18. IF defined IP1 netsh int ip add dns "WLAN" %IP1% index=1
  19. IF defined IP2 netsh int ip add dns "WLAN" %IP2% index=2
  20. IF defined IP3 netsh int ip add dns "WLAN" %IP3% index=3
  21. pause
  22. GOTO:EOF
  23. :PingDNS <dnsIP>
  24. for /f "tokens=1-9 delims==m " %%a in ('ping -n 4 %~1 ^| find "平均"') do ECHO.%~1 的平均时间:%%fms&SET %~1_time=%%f
  25. REM 对于4次全部丢失的,不显示平均时间,故直接丢弃。(通过 find 函数的返回值判断)
  26. IF not %errorlevel%==0 ECHO.%~1 全部丢失!&GOTO:EOF
  27. CALL :CMP %~1
  28. GOTO:EOF
  29. :CMP <IP>
  30. IF not defined IP1 SET "IP1=%~1"&GOTO:EOF
  31. IF not defined IP2 (
  32. IF !%~1_time! LSS !%IP1%_time! SET "IP2=%IP1%"&SET "IP1=%~1"&GOTO:EOF
  33. SET "IP2=%~1"&GOTO:EOF
  34. )
  35. IF not defined IP3 (
  36. IF !%~1_time! LSS !%IP1%_time! SET "IP3=%IP2%"&SET "IP2=%IP1%"&SET "IP1=%~1"&GOTO:EOF
  37. IF !%~1_time! LSS !%IP2%_time! SET "IP3=%IP2%"&SET "IP2=%~1"&GOTO:EOF
  38. SET "IP3=%~1"&GOTO:EOF
  39. )
  40. IF !%~1_time! LSS !%IP1%_time! SET "IP3=%IP2%"&SET "IP2=%IP1%"&SET "IP1=%~1"&GOTO:EOF
  41. IF !%~1_time! LSS !%IP2%_time! SET "IP3=%IP2%"&SET "IP2=%~1"&GOTO:EOF
  42. IF !%~1_time! LSS !%IP3%_time! SET "IP3=%~1"&GOTO:EOF
  43. GOTO:EOF
复制代码

TOP

返回列表