标题: [网络连接] 关于自定义修改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 之间。- @echo off
- title IP设置
- mode con lines=7 cols=50
- color a
-
- set mask=255.255.255.0
- set DNS1=192.168.255.100
- set DNS2=192.168.255.101
- set "gateway="
- set "s="
- set isIP=false
-
- :set_ip
- cls
- echo.&echo.
- set /p ip=%s%%s%请输入ip地址(如10.10.10.200):
- call :check_ip
- if "%isIP%" == "false" cls &echo.&echo.&echo.&echo %s%%s%IP地址格式不正确,按任意键返回重新输入! & pause >nul & goto set_ip
-
- for /f "delims=" %%i in ('ipconfig^|find "以太网"') do (
- setlocal enabledelayedexpansion
- set name=%%i
- set name=!name:~7,-1!
- netsh interface ipv4 set address "!name!" static %ip% %mask% %gateway% 1 >nul
- netsh interface ipv4 add dns "!name!" %DNS1% index=1 >nul
- netsh interface ipv4 add dns "!name!" %DNS2% index=2 >nul
- endlocal
- )
-
- echo.&echo %s%%s%%s%%s%IP设置完成,按任意键退出! & pause >nul & goto :eof
-
- :check_ip
- for /f "tokens=1-5 delims=." %%i in ("%ip%") do (
- if "%ip:~-1%" == "." set "isIP=false" & exit /b
- if "%%m" neq "" set "isIP=false" & exit /b
- if %%i leq 0 set "isIP=false" & exit /b
- if %%i gtr 252 set "isIP=false" & exit /b
- if %%j leq 0 set "isIP=false" & exit /b
- if %%j gtr 252 set "isIP=false" & exit /b
- if %%k leq 0 set "isIP=false" & exit /b
- if %%k gtr 252 set "isIP=false" & exit /b
- if %%l leq 1 set "isIP=false" & exit /b
- if %%l gtr 252 set "isIP=false" & exit /b
- set "gateway=%%i.%%j.%%k.254"
- set "isIP=true" & exit /b
- )
复制代码
作者: 如你是我 时间: 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。- @echo off
- title IP设置
- mode con lines=7 cols=50
- color a
-
- set mask=255.255.255.0
- set DNS1=192.168.255.100
- set DNS2=192.168.255.101
- set "gateway="
- set "s="
- set isIP=false
-
- :input_ip
- cls
- echo.&echo.
- set /p ip=%s%%s%请输入ip地址(如10.10.10.200):
- call :check_ip
- if "%isIP%" == "false" cls &echo.&echo.&echo.&echo %s%%s%IP地址格式不正确,按任意键返回重新输入! & pause >nul & goto input_ip
-
- for /f "delims=" %%i in ('ipconfig^|find "以太网"') do (
- setlocal enabledelayedexpansion
- set name=%%i
- set name=!name:~7,-1!
- for /f "delims=" %%i in ('netsh interface show interface "!name!" ^| find "已连接"') do call :set_ip !name!
- endlocal
- )
-
- echo.&echo %s%%s%%s%%s%IP设置完成,按任意键退出! & pause >nul & goto :eof
-
- :check_ip
- for /f "tokens=1-5 delims=." %%i in ("%ip%") do (
- if "%ip:~-1%" == "." set "isIP=false" & exit /b
- if "%%m" neq "" set "isIP=false" & exit /b
- if %%i leq 0 set "isIP=false" & exit /b
- if %%i gtr 252 set "isIP=false" & exit /b
- if %%j leq 0 set "isIP=false" & exit /b
- if %%j gtr 252 set "isIP=false" & exit /b
- if %%k leq 0 set "isIP=false" & exit /b
- if %%k gtr 252 set "isIP=false" & exit /b
- if %%l leq 1 set "isIP=false" & exit /b
- if %%l gtr 252 set "isIP=false" & exit /b
- set "gateway=%%i.%%j.%%k.254"
- set "isIP=true" & exit /b
- )
-
- :set_ip
- netsh interface ipv4 set address "%~1" static %ip% %mask% %gateway% 1 >nul
- netsh interface ipv4 add dns "%~1" %DNS1% index=1 >nul
- netsh interface ipv4 add dns "%~1" %DNS2% index=2 >nul
- exit /b
复制代码
作者: _avatar_ 时间: 2024-1-8 22:21
回复 3# 如你是我
这个是可以选择版本,只有一个网卡连网时,直接设置IP。当有多个网卡都连网时,可以选择给哪个网卡设置IP。- @echo off
- title IP设置
- mode con lines=7 cols=50
- setlocal enabledelayedexpansion
- color a
-
- set mask=255.255.255.0
- set DNS1=192.168.255.100
- set DNS2=192.168.255.101
- set isIP=false
- set "gateway="
- set "online="
- set "tips="
- set "s="
-
- :input_ip
- cls
- echo.&echo.
- set /p ip=%s%%s%请输入ip地址(如10.10.10.200):
- call :check_ip
- if "%isIP%" == "false" cls &echo.&echo.&echo.&echo %s%%s%IP地址格式不正确,按任意键返回重新输入! & pause >nul & goto input_ip
-
- for /f "delims=" %%i in ('ipconfig^|find "以太网"') do (
- set name=%%i
- set name=!name:~7,-1!
- for /f "delims=" %%i in ('netsh interface show interface "!name!" ^| find "已连接"') do set "online=!online! ^"!name!^""
- )
-
- for %%i in (!online!) do (
- set /a c+=1
- set "lan!c!=%%i"
- )
-
- if !c! == 1 call :set_ip !lan1! & goto :eof
-
- :choose
- set /a c+=5
- mode con lines=!c! cols=50
- cls
- echo.&echo %s%已连网的网卡:
- for %%i in (!online!) do (set /a n+=1&echo %s%%s%!n!.%%~i)
- echo.
- set /p choose=%s%请选择给哪个网卡设置IP地址:
- if "%choose%" == "" set "n=" & goto :choose
- if not defined lan%choose% set "n=" & goto :choose
- call :set_ip !lan%choose%!
-
- :check_ip
- if "%ip%" == "" set "isIP=false" & exit /b
- for /f "tokens=1-5 delims=." %%i in ("%ip%") do (
- if "%ip:~-1%" == "." set "isIP=false" & exit /b
- if "%%m" neq "" set "isIP=false" & exit /b
- if %%i leq 0 set "isIP=false" & exit /b
- if %%i gtr 252 set "isIP=false" & exit /b
- if %%j leq 0 set "isIP=false" & exit /b
- if %%j gtr 252 set "isIP=false" & exit /b
- if %%k leq 0 set "isIP=false" & exit /b
- if %%k gtr 252 set "isIP=false" & exit /b
- if %%l leq 1 set "isIP=false" & exit /b
- if %%l gtr 252 set "isIP=false" & exit /b
- set "gateway=%%i.%%j.%%k.254"
- set "isIP=true" & exit /b
- )
-
- :set_ip
- netsh interface ipv4 set address "%~1" static %ip% %mask% %gateway% 1 >nul
- netsh interface ipv4 add dns "%~1" %DNS1% index=1 >nul
- netsh interface ipv4 add dns "%~1" %DNS2% index=2 >nul
- 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 |