Board logo

标题: [网络连接] 关于自定义修改IP的批处理 [打印本页]

作者: 如你是我    时间: 2024-1-8 10:09     标题: 关于自定义修改IP的批处理

本帖最后由 如你是我 于 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系统
作者: _avatar_    时间: 2024-1-8 18:31

本帖最后由 _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

回复 2# _avatar_


    这是相当于无论有多少网卡,只要是接网线的 都会变成这个IP?
作者: _avatar_    时间: 2024-1-8 20:11

回复 3# 如你是我


    没有做连网判断,是所有以太网卡,不管有没插网线,都会设置。
作者: _avatar_    时间: 2024-1-8 20:49

本帖最后由 _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
复制代码

作者: _avatar_    时间: 2024-1-8 22:21

回复 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

回复 6# _avatar_


     感谢,第二个完美解决,第一个我试了下,我电脑是笔记本,有自带网卡和typec带的网卡,我平时都是用typec带的网卡上网,用第一个脚本,默认只设置了自带网卡(自带网卡没接网线)typec网卡只修改了DNS IP地址 掩码 网关都是空的
作者: beiking    时间: 2024-1-26 09:44

学习了,,感谢 _avatar_ 提供的好方法。




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