找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23092|回复: 0

[网络连接] 批处理修改网络参数怎样设置DNS和metric?

[复制链接]
发表于 2015-6-19 08:55:27 | 显示全部楼层 |阅读模式
下面这坨是我弄的一个修改网络参数的批,有几个问题
1.修改次要DNS该怎么弄
2.修改DNS的时候总是会提示提供的DNS参数不正确,这是啥原因
3.对metric怎么处理比较合理,现在是跳过这项,直接设成1
  1. @echo off
  2. :select_int
  3. cls
  4. set cnt=0
  5. echo 请选择网络接口
  6. echo.
  7. echo         0.退出
  8. for /f "tokens=4,5 delims= " %%i in ('netsh int ip sh int') do (
  9.         if "%%i"=="connected"  call :int_list %%j
  10.         )
  11. echo.
  12. set /p s_int=选择(1-%cnt%,0=退出):
  13. if "%s_int%"=="" goto select_int
  14. set tmp=0
  15. set delm=%tmp%
  16. :get_list_count
  17.         if not %tmp%==%cnt% (
  18.                 call :get_lc
  19.                 goto get_list_count
  20.                 )

  21. for /f "tokens=1 delims=%delm%" %%a in ('echo %s_int:~0,1%') do (
  22.         if not "%%a"=="" echo 输入有误 && pause>nul && goto select_int)
  23. if "%s_int:~0,1%"=="0" goto :eof
  24. set chint=%s_int:~0,1%
  25. set/a cnt=0
  26. for /f "tokens=4,5 delims= " %%i in ('netsh int ip sh int') do (
  27.         if "%%i"=="connected"  call :int_list2 %%j
  28.         )

  29. set newip=
  30. set newms=
  31. set newgw=
  32. set newdn=
  33. :show_int
  34. cls
  35. echo 网络接口"%c_int%"的参数
  36. echo.
  37. echo         0.退出
  38. for /f "tokens=3 delims=: " %%i in ('netsh int ip sh addr "%c_int%"^|findstr "IP 地址"') do (echo         1.IP 地 址:%%i        -        %newip% && set ip=%%i)
  39. for /f "tokens=4 delims=:) " %%j in ('netsh int ip sh addr "%c_int%"^|findstr "子网前缀"') do (echo         2.子网掩码:%%j        -        %newms% && set ms=%%j)
  40. for /f "tokens=2 delims=: " %%k in ('netsh int ip sh addr "%c_int%"^|findstr "默认网关"') do (echo         3.网    关:%%k        -        %newgw% && set gw=%%k)
  41. for /f "tokens=2 delims=: " %%l in ('netsh int ip sh addr "%c_int%"^|findstr "网关跃点数"') do (echo         4.跃 点 数:%%l && set mr=1)
  42. for /f "tokens=4 delims=: " %%m in ('netsh int ip sh dns "%c_int%"^|findstr "DNS 服务器"') do (echo         5.主要 DNS:%%m        -        %newdn% && set dn=%%m)
  43. echo         6.确认参数并退出
  44. echo.
  45. set /p cid=选择对应编号修改参数(1-5,0=不保存退出,6=保存修改并退出):
  46. if "%cid%"=="" goto show_int
  47. for /f "tokens=1 delims=0123456" %%a in ('echo %cid:~0,1%') do (
  48.         if not "%%a"=="" echo 输入有误 && pause>nul && goto show_int)
  49. if "%cid:~0,1%"=="0" goto :eof
  50. if "%cid:~0,1%"=="6" goto confimpara
  51. if "%cid:~0,1%"=="4" goto show_int
  52. call :newpara %cid:~0,1%
  53. goto show_int

  54. :confimpara
  55. echo.
  56. echo.
  57. echo.
  58. if not "%newip%"=="" set ip=%newip%
  59. if not "%newms%"=="" set ms=%newms%
  60. if not "%newgw%"=="" set gw=%newgw%
  61. if not "%newdn%"=="" set dn=%newdn%
  62. echo 错误信息:(如无提示即正确)
  63. netsh int ip set addr %c_int% static %ip% %ms% %gw% %mr%
  64. netsh int ip set dns %c_int% static %dn% primary
  65. echo.
  66. echo.
  67. echo.
  68. pause
  69. goto :eof

  70. :newpara
  71.         if "%1"=="1" set str=IP地址
  72.         if "%1"=="2" set str=子网掩码
  73.         if "%1"=="3" set str=网关
  74.         if "%1"=="5" set str=主DNS服务器地址
  75.         set /p newp=请输入新%str%:
  76.         if "%newp%"=="" goto :eof
  77.         for /f "tokens=1 delims=0123456789." %%a in ('echo %newp%') do (
  78.                 if not "%%a"=="" echo 输入有误
  79.                 pause>nul
  80.                 set/a newp=
  81.                 goto :eof
  82.                 )
  83.         for /f "tokens=1,2,3,4,5 delims=." %%b in ('echo %newp%') do (
  84.                 if %%b lss 0 (echo 第一位小于0&&pause>nul&&set/a newp=)
  85.                 if %%b gtr 255 (echo 第一位大于255&&pause>nul&&set/a newp=)
  86.                 if %%c lss 0 (echo 第二位小于0&&pause>nul&&set/a newp=)
  87.                 if %%c gtr 255 (echo 第二位大于255&&pause>nul&&set/a newp=)
  88.                 if %%d lss 0 (echo 第三位小于0&&pause>nul&&set/a newp=)
  89.                 if %%d gtr 255 (echo 第三位大于255&&pause>nul&&set/a newp=)
  90.                 if %%e lss 0 (echo 第四位小于0&&pause>nul&&set/a newp=)
  91.                 if %%e gtr 255 (echo 第四位大于255&&pause>nul&&set/a newp=)
  92.                 if not "%%f"==""  (echo 输入有误&&pause>nul&&set/a newp=)
  93.                 )
  94.         if "%1"=="1" set newip=%newp%
  95.         if "%1"=="2" set newms=%newp%
  96.         if "%1"=="3" set newgw=%newp%
  97.         if "%1"=="5" set newdn=%newp%
  98. goto :eof

  99. :int_list
  100.         set /a cnt+=1
  101.         echo         %cnt%.%1
  102. goto :eof

  103. :int_list2
  104.         set /a cnt+=1
  105.         if "%cnt%"=="%chint%" set c_int=%1
  106. goto :eof

  107. :get_lc
  108.         set /a tmp+=1
  109.         set delm=%delm%%tmp%
  110. goto :eof

  111. :eof
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 23:58 , Processed in 0.017170 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表