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

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

下面这坨是我弄的一个修改网络参数的批,有几个问题
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
复制代码

返回列表