Board logo

标题: [网络连接] 关于切换IP的批处理 [打印本页]

作者: love303929545    时间: 2018-9-20 11:39     标题: 关于切换IP的批处理

由于公司电脑较多,又经常断网。管理说把所有的都改成固定IP就好了。但是,一台一台的去改很麻烦,然后网上找到的都是固定的适配器名才能用,而且还必须要禁用其他的适配器。公司的电脑有的适配器名字是本地连接,有的是本地连接2,有的又是其他名字,所以,网上能找到的都不能用。。。。所以,大佬们有没有可以不管什么适配器名字都可以改成固定IP的
作者: Batcher    时间: 2018-9-20 12:18

改成固定IP就不断网了?这么神奇啊
作者: love303929545    时间: 2018-9-20 14:02

回复 2# Batcher


    我哪知道呢 老板咋说我们员工只有照做咯
作者: Batcher    时间: 2018-9-20 14:14

回复 3# love303929545


    假设100台电脑对应100个不同的IP,你们老板有没有说电脑和IP怎样一一对应呢?
作者: 断桥    时间: 2018-9-22 08:45

本帖最后由 断桥 于 2018-9-22 08:47 编辑

回复 1# love303929545
不知道是不是你要的,过程可能需要小做修改。
注意本人测试时有如下问题
win7以上操作系统必须以管理员运行,有的电脑不敢保证能修改成功,如不能成功请稍作修改。
代码的意思是获取当前IP地址后设置成静态IP(包括DNS),如贵司采用租约DNS的话,一定修改不成功!
如电脑上安装虚拟机(如virtualbox)不保证能修改成功,如不能成功请稍作修改。
更多的需要使用者测试。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :init
  4. cls&echo ——————————————自动修改本机IP地址——————————————
  5. rem 系统版本,值可为Windows7或是WindowsXP,或是auto(表示自动获取)
  6. set SYSVER=auto
  7. rem 要更改的网卡名称,auto表示自动获取第一块“以太网适配器”
  8. set ETH=auto
  9. rem IP来源,值仅为两个static和dhcp,ques表示询问,由使用者填写
  10. rem 静态IP请填写static,从网关自动获取IP请填写dhcp
  11. set IPSOURCE=ques
  12. rem 要改成的IP地址,ques同上
  13. set IPADDR=ques
  14. rem 要改成的子网掩码,ques同上
  15. set MASK=ques
  16. rem 要使用的默认网关,ques同上
  17. set GATEWAY=ques
  18. rem DNS模式,值仅为两个static和dhcp
  19. rem 静态DNS请填写static,从网关自动获取DNS请填写dhcp
  20. set DNSSOURCE=ques
  21. rem 要使用的首选DNS,ques同上
  22. set DNS1=ques
  23. rem 要使用的备用DNS,ques同上
  24. set DNS2=ques
  25. set LOG=%TEMP%\changeIP_log.txt
  26. echo 运行日期:%date% %time%>%LOG%
  27. :start
  28. rem ===============使用者填写参数值=======================
  29. rem 自动获取系统版本,结果为 Windows7 或是 WindowsXP(只测试了这两个系统)
  30. if "%SYSVER%"=="auto" (
  31.     set /p=正在自动获取系统版本...<nul
  32.     for /f "skip=1 tokens=2-3 delims= " %%i in ('wmic os get caption') do set SYSVER=%%i%%j
  33.     if /i "!SYSVER!"=="Windows7" (
  34.         echo 成功![Win7]
  35.     ) else (
  36.         if /i "!SYSVER!"=="WindowsXP" (
  37.             echo 成功![WinXP]
  38.         ) else (
  39.             echo [!SYSVER!]
  40.             echo 【注意】非Win7和XP系统不保证能执行成功!&pause>nul
  41.         )
  42.     )
  43. )
  44. rem 自动获取网卡名称
  45. if "%ETH%"=="auto" (
  46.     set /p=正在自动获取网络适配器信息...<nul
  47.     set index=0
  48.     if /i "%SYSVER%"=="Windows7" (
  49.         set findstr="以太网适配器 "
  50.         for /f "tokens=1*" %%i in ('ipconfig /all^|find /i !findstr!') do (
  51.             if !index!==0 set ethname=%%j
  52.             set /a index=!index!+1
  53.         )
  54.     ) else (if /i "%SYSVER%"=="WindowsXP" (
  55.         set findstr="Ethernet adapter "
  56.         for /f "tokens=2*" %%i in ('ipconfig /all^|find /i !findstr!') do (
  57.             if !index!==0 set ethname=%%j
  58.             set /a index=!index!+1
  59.         )
  60.      ))
  61.     rem 删除网卡名称后面的冒号。
  62.     for /f "tokens=1* delims=:" %%i in ("!ethname!") do set ETH=%%i
  63.     if "!ETH!"=="auto" (
  64.         echo.&echo 自动获取网卡名称失败,请右键编辑本批处理,手动填写网卡名称!&pause>nul&exit
  65.     ) else (
  66.         set/p=[!ETH!]<nul
  67.         echo 成功!
  68.     )
  69. )
  70. :quesIP
  71. if "%IPSOURCE%"=="ques" (
  72.     echo →请填写【IP地址来源】^(值仅为两个static和dhcp,直接回车为static^)
  73.     set /p IPSOURCE=
  74.     if "!IPSOURCE!"=="ques" set IPSOURCE=static
  75.     if /i "!IPSOURCE!" NEQ "static" (if /i "!IPSOURCE!" NEQ "dhcp" (
  76.         set IPSOURCE=static
  77.         echo IP来源填写错误,将变更为static模式
  78.         pause>nul
  79.     ))
  80. )
  81. if /i "%IPSOURCE%"=="dhcp" goto quesDNS
  82. if "%IPADDR%"=="ques" (
  83.     echo →请填写【IP地址】^(直接回车为192.168.1.100^)
  84.     set /p IPADDR=
  85.     if "!IPADDR!"=="ques" set IPADDR=192.168.1.100
  86. )
  87. if "%MASK%"=="ques" (
  88.     echo →请填写【子网掩码】^(直接回车为255.255.255.0^)
  89.     set /p MASK=
  90.     if "!MASK!"=="ques" set MASK=255.255.255.0
  91. )
  92. if "%GATEWAY%"=="ques" (
  93.     echo →请填写【默认网关】^(直接回车为192.168.1.1^)
  94.     set /p GATEWAY=
  95.     if "!GATEWAY!"=="ques" set GATEWAY=192.168.1.1
  96. )
  97. :quesDNS
  98. if "%DNSSOURCE%"=="ques" (
  99.     echo →请填写【DNS来源】^(值仅为两个static和dhcp,直接回车为static^)
  100.     set /p DNSSOURCE=
  101.     if "!DNSSOURCE!"=="ques" set DNSSOURCE=static
  102.     if /i "!DNSSOURCE!" NEQ "static" (if /i "!DNSSOURCE!" NEQ "dhcp" (
  103.         set DNSSOURCE=static
  104.         echo DNS来源填写错误,将变更为static模式
  105.         pause>nul
  106.     ))
  107. )
  108. if /i "%DNSSOURCE%"=="dhcp" goto checkInfo
  109. if "%DNS1%"=="ques" (
  110.     echo →请填写【首选DNS地址】^(直接回车为8.8.8.8^)
  111.     set /p DNS1=
  112.     if "!DNS1!"=="ques" set DNS1=8.8.8.8
  113. )
  114. if "%DNS2%"=="ques" (
  115.     echo →请填写【备用DNS地址】^(直接回车为8.8.4.4^)
  116.     set /p DNS2=
  117.     if "!DNS2!"=="ques" set DNS2=8.8.4.4
  118. )
  119. :checkInfo
  120. cls
  121. echo 即将应用以下配置:
  122. call :showInfo
  123. echo 请确认信息是否正确,输入Y继续,输入N退出,输入Q显示本机网络信息
  124. set choose=nul&set /p choose=
  125. if /i "%choose%"=="nul" goto checkInfo
  126. if /i "%choose%"=="N" exit
  127. if /i "%choose%"=="Q" call :getInfo & pause & goto checkInfo
  128. if /i "%choose%" NEQ "Y" goto checkInfo
  129. echo ★注意★请关闭防火墙或允许所有弹出的安全软件提示,否则无法成功执行!
  130. :changeIP
  131. rem 通过dhcp删除原有IP配置
  132. echo →设置"%ETH%"的IP源为DHCP,以删除原有IP地址 >>%LOG%
  133. netsh -c interface ip set address name="%ETH%" source=dhcp >>%LOG%
  134. if /i "%IPSOURCE%"=="static" (
  135.     echo →设置IP为"%IPADDR%",掩码为"%MASK%",网关为"%GATEWAY%" >>%LOG%
  136.     netsh -c interface ip set address name="%ETH%" source=static address="%IPADDR%" mask="%MASK%" gateway="%GATEWAY%" gwmetric=1 >>%LOG%
  137. )
  138. rem 删除原有DNS配置
  139. echo →删除原有DNS配置 >>%LOG%
  140. netsh -c interface ip delete dns "%ETH%" all >>%LOG%
  141. if /i "%DNSSOURCE%"=="static" (
  142.     echo →设置首选DNS为%DNS1% >>%LOG%
  143.     netsh -c interface ip add dns name="%ETH%" addr="%DNS1%" index=1 >>%LOG%
  144.     echo →设置备用DNS为%DNS2% >>%LOG%
  145.     netsh -c interface ip add dns name="%ETH%" addr="%DNS2%" index=2 >>%LOG%
  146.     rem ↑此处可继续增加多个DNS服务器地址
  147. ) else (if /i "%DNSSOURCE%"=="dhcp" (
  148.     echo →设置DNS为DHCP模式 >>%LOG%
  149.     netsh -c interface ip set dns name="%ETH%" dhcp >>%LOG%
  150. ))
  151. :end
  152. cls
  153. rem echo 【要设定的信息】
  154. rem call :showInfo
  155. echo 【当前本机信息】
  156. call :getInfo
  157. echo ======================================
  158. echo 如果上下一致则说明修改成功!
  159. echo 如果不一致则请查看日志文件!
  160. echo 输入L查看日志文件,输入E退出程序。
  161. set choose=nul&set /p choose=
  162. if /i "%choose%"=="L" start %LOG%&goto end
  163. if /i "%choose%"=="E" exit
  164. if /i "%choose%"=="nul" goto end
  165. echo 程序执行结束,按任意键退出...
  166. pause>nul
  167. exit
  168. :showInfo
  169. echo 【本机系统】:%SYSVER%
  170. echo 【网卡名称】:%ETH%
  171. echo 【IP来源  】:%IPSOURCE%
  172. if "%IPSOURCE%"=="static" (
  173.     echo 【IP地址  】:%IPADDR%
  174.     echo 【子网掩码】:%MASK%
  175.     echo 【默认网关】:%GATEWAY%
  176. )
  177. echo 【DNS来源 】:%DNSSOURCE%
  178. if "%DNSSOURCE%"=="static" (
  179.     echo 【首选DNS 】:%DNS1%
  180.     echo 【备用DNS 】:%DNS2%
  181. )
  182. rem goto :eof等于返回return
  183. goto :eof
  184. :getInfo
  185. netsh -c interface ip show address name="%ETH%"
  186. netsh -c interface ip show dns name="%ETH%"
  187. goto :eof
  188. :windows7
  189. ==============================================
  190. 接口 "本地连接" 的配置
  191.     DHCP 已启用:                       否
  192.     IP 地址:                           192.168.1.253
  193.     子网前缀:                          192.168.1.0/24 (掩码 255.255.255.0)
  194.     默认网关:                          192.168.1.1
  195.     网关跃点数:                        1
  196.     InterfaceMetric:                   20
  197.    
  198.    
  199. 接口 "本地连接" 的配置
  200.    静态配置的 DNS 服务器:            8.8.8.8
  201.                                      8.8.4.4
  202.    用哪个前缀注册:                   只是主要
复制代码





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