Board logo

标题: [网络工具] 支持多网卡,多模式,多系统的IP切换的批处理 [打印本页]

作者: zc584267913    时间: 2010-5-28 15:51     标题: 支持多网卡,多模式,多系统的IP切换的批处理

最近帮朋友写的一个批处理,因为他经常在公司和家里切换IP觉得很麻烦,不过他的系统是WIN7的,而且每次在公司所切换的IP也可能会不同,所以就写了个支持WINDOWS下XP WIN7 VISTA系统的IP切换批处理,该批处理可以支持多张网卡,支持手工/自动/读取IP配置表。经测试可以正常使用,但代码可能有一些冗余,希望大家可以多多提出宝贵的建议
  1. @echo off&setlocal enabledelayedexpansion
  2. title make by zcHacker QQ: 36868508
  3. color 1f
  4. mode con: cols=78 lines=30
  5. for /f "tokens=* delims= " %%f in ('ver') do echo 本机系统为:%%f
  6. echo 系统内核为:%os%
  7. echo.
  8. echo.☆请注意:目前该系统仅支持Windows下的XP Vista Win7三类系统。
  9. if /i not "%os%" == "Windows_NT" echo.&echo 当前系统非Windows_NT内核,本软件暂不支持!请按任意键退出。 &pause>nul&goto :b
  10. ::if /i "!zcz:~28,2!" == "XP" (goto :XP) else (echo.&echo 当前系统非Windows XP,本软件暂不支持!请按任 意键退出。&pause>nul&goto :b)
  11. ::win7 Microsoft Windows 7
  12. ::方案1: for /f "tokens=3 delims= " %%f in ('ver') do echo 本机系统为:%%f
  13. for /f "tokens=3 delims= " %%z in ('ver') do set zcz=%%z
  14. if /i "!zcz!" == "XP" (set ip=ip) else (set ip=ipv4)
  15. if /i "!zcz!" == "XP" (goto :xp) else (goto :v7)
  16. :xp
  17. echo.
  18. echo 本机网卡:
  19. for /f "tokens=2*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&set zc_!bb!=%%j
  20. for /l %%p in (1,1,!bb!) do set zcc=!zc_%%p!&echo %%p.!zcc:~0,-2!
  21. goto :a
  22. :v7
  23. echo.
  24. echo 本机网卡:
  25. for /f "tokens=1*" %%g in ('ipconfig^|find /i "适配器"') do set/a bbb+=1&set zccc_!bbb!=%%h
  26. for /l %%q in (1,1,!bbb!) do set zccz=!zccc_%%q!&echo %%q.!zccz:~0,-1!
  27. ::for /l %%q in (1,1,!bbb!) do set zccz=!zccc_%%q!&echo %%q.!zccz:~0,-2!
  28. goto :a
  29. :a
  30. echo.
  31. set/p y=请对所需要设置的网卡进行选择:
  32. if /i %y% == x goto :b
  33. if %y% lss 1 echo.输入错误!请重新输入,退出请按【X】&goto :a
  34. if %y% gtr !bb! echo.输入错误!请重新输入,退出请按【X】&goto :a
  35. if /i "!zcz!" == "XP" (set Q="!zc_%y%:~0,-2!") else (set Q="!zccc_%y%:~0,-1!")
  36. echo.当前所选择的网卡为:%Q%
  37. :d
  38. echo.
  39. echo 1.手动设置   2.自动设置
  40. set/p sz=请选择所需要设置的类别:
  41. if /i %sz% == x (goto :b) else (if %sz% geq 1 (if %sz% leq 2 if %sz% equ 1 (goto :shou) else (goto  :auto) else echo.输入错误!请重新输入,退出请按【X】&goto :d) else echo.输入错误!请重新输入,退出请按 【X】&goto :d)
  42. echo.
  43. :shou
  44. cls
  45. echo.是否读取IP配置表?(读取请按"Y",手工输入请按"N"):
  46. set/p ynn=
  47. if /i %ynn% == y goto :py
  48. echo.
  49. echo 请输入IP地址:
  50. set/p aaa=
  51. echo 请输入子网掩码:
  52. set/p bbb=
  53. echo 请输入网关地址:
  54. set/p ccc=
  55. echo 请输入首选DNS服务器:
  56. set/p ddd=
  57. echo 请输入备用DNS服务器:
  58. set/p eee=
  59. echo.
  60. echo.请问是否保存该配置?(确认请按"Y",取消请按"N"):
  61. set/p yn=
  62. if /i %yn% == y (goto :save) else (goto :she)
  63. :py
  64. echo.
  65. echo.当前配置表如下:
  66. echo.
  67. if not exist "%~dp0"IP.txt (echo.该文件不存在,请按任意键返回。&pause>nul&goto :shou)
  68. type "%~dp0"\IP.txt
  69. echo.请输入你所需要使用的配置表名:(返回请按"R")
  70. set/p iip=
  71. ::for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt') do set/a n+=1&if !n!==1 set ii=%%i
  72. ::for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt') do set/a n+=1&set i!n!=%%i
  73. for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt^|find /i "%iip%"') do set/a n+=1&set i!n!=%%i
  74. for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt^|find /i "IP配置表:%iip%"') do set ipi=%%i
  75. ::for /l %%i in (1,1,!n!) do set !i%%1!
  76. if /i %iip% == R (goto :d)
  77. if /i %iip% == %ipi% (goto :one) else (cls&echo.操作失败。请重新输入:&goto :py)
  78. :one
  79. set aaa=!i2!
  80. set bbb=!i3!
  81. set ccc=!i4!
  82. set ddd=!i5!
  83. set eee=!i6!
  84. goto :she
  85. :save
  86. echo.
  87. echo.请对该配置表进行命名:
  88. set/p ipp=
  89. for /f "tokens=2* delims=:" %%i in ('type "%~dp0"IP.txt^|find /i "IP配置表:%ipp%"') do set ipi=%%i
  90. if /i %ipp% == %ipi% (echo.echo.该表名已存在,请重新输入:&goto :save)
  91. echo.IP配置表:%ipp%>>"%~dp0"\IP.txt
  92. echo.%ipp%的IP地址:%aaa%>>"%~dp0"\IP.txt
  93. echo.%ipp%的子网掩码:%bbb%>>"%~dp0"\IP.txt
  94. echo.%ipp%的网关地址:%ccc%>>"%~dp0"\IP.txt
  95. echo.%ipp%的首选DNS:%ddd%>>"%~dp0"\IP.txt
  96. echo.%ipp%的备用DNS:%eee%>>"%~dp0"\IP.txt
  97. echo. >>"%~dp0"\IP.txt
  98. echo.
  99. echo.保存成功!
  100. :she
  101. echo.
  102. echo 正在设置,请稍后。。。。。
  103. echo.
  104. netsh interface %ip% set address name=%Q% source=static addr=%aaa% mask=%bbb%
  105. netsh interface %ip% set address name=%Q% gateway=%ccc% gwmetric=0
  106. netsh interface %ip% set dns name=%Q% source=static addr=%ddd% register=PRIMARY
  107. netsh interface %ip% add dns name=%Q% addr=%eee%
  108. netsh interface %ip% set wins name=%Q% source=static addr=none
  109. goto :c
  110. :auto
  111. cls
  112. echo 正在设置,请稍后。。。。。
  113. echo.
  114. @echo.正在设置IP自动获取.....
  115. netsh interface %ip% set address name=%Q% source = dhcp>nul
  116. @echo.正在设置DNS自动获取.....
  117. netsh interface %ip% set dns %Q% source = dhcp register=PRIMARY>nul
  118. @echo.正在设置WINS自动获取.....
  119. netsh interface %ip% set wins name=%Q% source=dhcp>nul
  120. goto :c
  121. :b
  122. exit
  123. :c
  124. echo.
  125. echo.已经设置完成,按按任意键退出。
  126. pause>nul
复制代码

作者: xinje    时间: 2010-5-29 00:24

好贴,必须要回的 。
作者: wanfcl83    时间: 2010-5-31 02:13

这个批处理很好  对我 起了 好大的作用 谢谢 楼主啦  楼主辛苦啦
作者: kbsjfans    时间: 2010-6-26 14:40

不错,这东东挺有用处的,下了学习!
作者: fenglin124    时间: 2010-11-7 13:12

怎么个用法啊,,,,除了退出,输入什么都会提示“输入错误”
作者: wlj0520    时间: 2011-11-4 11:36

我喜欢,嘎嘎
作者: ggehuliang    时间: 2011-11-26 20:13

强大啊,学到了,GOTO用得好!
作者: gawk    时间: 2012-4-16 18:57

回复 9# icqlyj


    神马问题呢?
作者: lateol    时间: 2013-2-28 23:49

怎么按什么都是 错误的?




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2