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

[网络连接] 关于自定义修改IP的批处理

[复制链接]
发表于 2024-1-8 10:09:24 | 显示全部楼层 |阅读模式
本帖最后由 如你是我 于 2024-1-10 10:15 编辑

公司电脑有基本都有两块网卡,网卡名称不固定,但是只会一根网卡插网线,如何通过批处理获取连接了网线的网卡,并将网卡IP修改为自定义的IP地址呢,掩码固定为255.255.255.0,网关为自定义IP的末尾254 DNS固定为192.168.255.1和192.168.255.2

比如设置为10.x.x.x
会提示自己输入10.10.10.200
网关会自动设为10.10.10.254

我输入10.20.20.200
网关会自动设置为10.20.20.254
都是win10 22h2系统
发表于 2024-1-8 18:31:16 | 显示全部楼层
本帖最后由 _avatar_ 于 2024-1-8 20:50 编辑

回复 1# 如你是我


    其实不需要去判断哪个插了网线,把所有有线的IP都设置上就可以了。

     对IP地址做了简单的格式判断,并且最后一位只能是 2~252 之间。
  1. @echo off
  2. title IP设置
  3. mode con lines=7 cols=50
  4. color a

  5. set mask=255.255.255.0
  6. set DNS1=192.168.255.100
  7. set DNS2=192.168.255.101
  8. set "gateway="
  9. set "s=?"
  10. set isIP=false

  11. :set_ip
  12. cls
  13. echo.&echo.
  14. set /p ip=%s%%s%请输入ip地址(如10.10.10.200):
  15. call :check_ip
  16. if "%isIP%" == "false" cls &echo.&echo.&echo.&echo %s%%s%IP地址格式不正确,按任意键返回重新输入! & pause >nul & goto set_ip

  17. for /f "delims=" %%i in ('ipconfig^|find "以太网"') do (
  18.   setlocal enabledelayedexpansion
  19.   set name=%%i
  20.   set name=!name:~7,-1!
  21.   netsh interface ipv4 set address "!name!" static %ip% %mask% %gateway% 1 >nul
  22.   netsh interface ipv4 add dns "!name!" %DNS1% index=1 >nul
  23.   netsh interface ipv4 add dns "!name!" %DNS2% index=2 >nul
  24.   endlocal
  25. )

  26. echo.&echo %s%%s%%s%%s%IP设置完成,按任意键退出! & pause >nul & goto :eof

  27. :check_ip
  28. for /f "tokens=1-5 delims=." %%i in ("%ip%") do (
  29.   if "%ip:~-1%" == "." set "isIP=false" & exit /b
  30.   if "%%m" neq "" set "isIP=false" & exit /b
  31.   if %%i  leq 0 set "isIP=false" & exit /b
  32.   if %%i  gtr 252 set "isIP=false" & exit /b
  33.   if %%j  leq 0 set "isIP=false" & exit /b
  34.   if %%j  gtr 252 set "isIP=false" & exit /b
  35.   if %%k  leq 0 set "isIP=false" & exit /b
  36.   if %%k gtr 252 set "isIP=false" & exit /b
  37.   if %%l  leq 1 set "isIP=false" & exit /b
  38.   if %%l  gtr 252 set "isIP=false" & exit /b
  39.   set "gateway=%%i.%%j.%%k.254"
  40.   set "isIP=true" & exit /b
  41. )


复制代码
 楼主| 发表于 2024-1-8 19:59:36 | 显示全部楼层
回复 2# _avatar_


    这是相当于无论有多少网卡,只要是接网线的 都会变成这个IP?
发表于 2024-1-8 20:11:58 | 显示全部楼层
回复 3# 如你是我


    没有做连网判断,是所有以太网卡,不管有没插网线,都会设置。
发表于 2024-1-8 20:49:38 | 显示全部楼层
本帖最后由 _avatar_ 于 2024-1-8 22:22 编辑

回复 3# 如你是我


    这个是按你要求写的了,只会给连接了网络的网卡设置IP。
  1. @echo off
  2. title IP设置
  3. mode con lines=7 cols=50
  4. color a

  5. set mask=255.255.255.0
  6. set DNS1=192.168.255.100
  7. set DNS2=192.168.255.101
  8. set "gateway="
  9. set "s=?"
  10. set isIP=false

  11. :input_ip
  12. cls
  13. echo.&echo.
  14. set /p ip=%s%%s%请输入ip地址(如10.10.10.200):
  15. call :check_ip
  16. if "%isIP%" == "false" cls &echo.&echo.&echo.&echo %s%%s%IP地址格式不正确,按任意键返回重新输入! & pause >nul & goto input_ip

  17. for /f "delims=" %%i in ('ipconfig^|find "以太网"') do (
  18.   setlocal enabledelayedexpansion
  19.   set name=%%i
  20.   set name=!name:~7,-1!
  21.   for /f "delims=" %%i in ('netsh interface show interface "!name!" ^| find "已连接"') do call :set_ip !name!
  22.   endlocal
  23. )

  24. echo.&echo %s%%s%%s%%s%IP设置完成,按任意键退出! & pause >nul & goto :eof

  25. :check_ip
  26. for /f "tokens=1-5 delims=." %%i in ("%ip%") do (
  27.   if "%ip:~-1%" == "." set "isIP=false" & exit /b
  28.   if "%%m" neq "" set "isIP=false" & exit /b
  29.   if %%i  leq 0 set "isIP=false" & exit /b
  30.   if %%i  gtr 252 set "isIP=false" & exit /b
  31.   if %%j  leq 0 set "isIP=false" & exit /b
  32.   if %%j  gtr 252 set "isIP=false" & exit /b
  33.   if %%k  leq 0 set "isIP=false" & exit /b
  34.   if %%k gtr 252 set "isIP=false" & exit /b
  35.   if %%l  leq 1 set "isIP=false" & exit /b
  36.   if %%l  gtr 252 set "isIP=false" & exit /b
  37.   set "gateway=%%i.%%j.%%k.254"
  38.   set "isIP=true" & exit /b
  39. )

  40. :set_ip
  41. netsh interface ipv4 set address "%~1" static %ip% %mask% %gateway% 1 >nul
  42. netsh interface ipv4 add dns "%~1" %DNS1% index=1 >nul
  43. netsh interface ipv4 add dns "%~1" %DNS2% index=2 >nul
  44. exit /b


复制代码
发表于 2024-1-8 22:21:50 | 显示全部楼层
回复 3# 如你是我


    这个是可以选择版本,只有一个网卡连网时,直接设置IP。当有多个网卡都连网时,可以选择给哪个网卡设置IP。
  1. @echo off
  2. title IP设置
  3. mode con lines=7 cols=50
  4. setlocal enabledelayedexpansion
  5. color a

  6. set mask=255.255.255.0
  7. set DNS1=192.168.255.100
  8. set DNS2=192.168.255.101
  9. set isIP=false
  10. set "gateway="
  11. set "online="
  12. set "tips="
  13. set "s=?"

  14. :input_ip
  15. cls
  16. echo.&echo.
  17. set /p ip=%s%%s%请输入ip地址(如10.10.10.200):
  18. call :check_ip
  19. if "%isIP%" == "false" cls &echo.&echo.&echo.&echo %s%%s%IP地址格式不正确,按任意键返回重新输入! & pause >nul & goto input_ip

  20. for /f "delims=" %%i in ('ipconfig^|find "以太网"') do (
  21.   set name=%%i
  22.   set name=!name:~7,-1!
  23.   for /f "delims=" %%i in ('netsh interface show interface "!name!" ^| find "已连接"') do set "online=!online! ^"!name!^""
  24. )

  25. for %%i in (!online!) do (
  26.   set /a c+=1
  27.   set "lan!c!=%%i"
  28. )

  29. if !c! == 1 call :set_ip !lan1! & goto :eof

  30. :choose
  31. set /a c+=5
  32. mode con lines=!c! cols=50
  33. cls
  34. echo.&echo %s%已连网的网卡:
  35. for %%i in (!online!) do (set /a n+=1&echo %s%%s%!n!.%%~i)
  36. echo.
  37. set /p choose=%s%请选择给哪个网卡设置IP地址:
  38. if "%choose%" == "" set "n=" & goto :choose
  39. if not defined lan%choose% set "n=" & goto :choose
  40. call :set_ip !lan%choose%!

  41. :check_ip
  42. if "%ip%" == "" set "isIP=false" & exit /b
  43. for /f "tokens=1-5 delims=." %%i in ("%ip%") do (
  44.   if "%ip:~-1%" == "." set "isIP=false" & exit /b
  45.   if "%%m" neq "" set "isIP=false" & exit /b
  46.   if %%i  leq 0 set "isIP=false" & exit /b
  47.   if %%i  gtr 252 set "isIP=false" & exit /b
  48.   if %%j  leq 0 set "isIP=false" & exit /b
  49.   if %%j  gtr 252 set "isIP=false" & exit /b
  50.   if %%k  leq 0 set "isIP=false" & exit /b
  51.   if %%k gtr 252 set "isIP=false" & exit /b
  52.   if %%l  leq 1 set "isIP=false" & exit /b
  53.   if %%l  gtr 252 set "isIP=false" & exit /b
  54.   set "gateway=%%i.%%j.%%k.254"
  55.   set "isIP=true" & exit /b
  56. )

  57. :set_ip
  58. netsh interface ipv4 set address "%~1" static %ip% %mask% %gateway% 1 >nul
  59. netsh interface ipv4 add dns "%~1" %DNS1% index=1 >nul
  60. netsh interface ipv4 add dns "%~1" %DNS2% index=2 >nul
  61. cls&echo.&echo.&echo %s%%s%%s%%s%IP设置完成,按任意键退出! & pause >nul & goto :eof


复制代码
 楼主| 发表于 2024-1-10 10:06:52 | 显示全部楼层
回复 6# _avatar_


     感谢,第二个完美解决,第一个我试了下,我电脑是笔记本,有自带网卡和typec带的网卡,我平时都是用typec带的网卡上网,用第一个脚本,默认只设置了自带网卡(自带网卡没接网线)typec网卡只修改了DNS IP地址 掩码 网关都是空的
发表于 2024-1-26 09:44:28 | 显示全部楼层
学习了,,感谢 _avatar_ 提供的好方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:09 , Processed in 0.014809 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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