
标题: [网络连接] 请问各位如何用批处理方式设定固定IP地址 [打印本页]
作者: babboyshi 时间: 2025-4-9 15:16 标题: 请问各位如何用批处理方式设定固定IP地址
netsh interface ipv4 set address "本地连接 2" static 192.168.10.1 255.255.255.0 192.168.10.1
::设置DNS服务器
netsh interface ipv4 set dnsservers "本地连接 2" static 192.168.10.253 primary
::设置次要的DNS服务器地址
netsh interface ipv4 set dnsservers "本地连接 2" static 192.168.10.253
试过用这个方法,但是会提示错误
我也知道netsh interface ipv4 set address "本地连接 2"根据实际改的,我的连接是以太网。
@echo off
netsh interface ipv4 set address "以太网" static 192.168.12.59 255.255.255.0 192.168.12.1
::设置DNS服务器
netsh interface ipv4 set dnsservers "以太网" static 192.168.10.253 primary
::设置次要的DNS服务器地址
netsh interface ipv4 set dnsservers "以太网" static 192.168.10.253
pause
错误提示
文件名、目录名或卷标语法不正确。
,不是内部或外部命令,也不是可运行的程序interface或批处理文件。一个或多个重要的参数没有输入。请验证需要的参数,然后再次输入。此命令提供的语法不正确。请查看帮助以获取正确的语法信息。
用法:set dnsservers [name=]<字符串>[source=]dhcp static[[address=]<IP 地址>none]Lregister= none primary both]I[validate=lyes no]
参数:
标记竹接口的名称或索引。下列值之一:dhcp:将 DHCP 设置为源,以便为特定接口配置 DNS服务器。static:将用于配置 DNS 服务器的源设置为本地静态配置。下列值之一:<IP address>
NS 服务器的 IP 地址。none:清除 DNS 服务器的列表。下列值之:none:禁用动态 DNS 注册。primary:仅在主 DNS 后级下注册。both:在主 DNS 后缀下注册,同时在特定连接后缀下注册。指定是否将验证 DNS 服务器validate
name
source
address
register
没置。
默认情况下,值为 yes。
备注:将 DNS 服务器配置设置为 DHCP 或静态模式。仅当源为static 时,"addr”选项还可用于为指定的接口配置 DNS 服务器的 IP 地址静态列表。如果 Validate 开关为 yes,则验证新设置的 DNS 服务器。
示例:
set dnsservers name"Wired Ethernet Connection" source=dhcpWired Ethernet Connection"static 10.0.0.1 primaryset dnsservers
请按任意键继续.
作者: 北极奇熊 时间: 2025-4-9 15:26
@echo off
title 网络工具
color 3E
::preset IP
set Net_IP_Diy=192.168.10.1
set Net_MASK=255.255.255.0
set Net_gateway=192.168.10.1
::preset DNS
set Net_dnsPra= 192.168.10.253
set Net_dnsOrder= 192.168.10.253
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else (
goto gotAdmin
)
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
:start
echo.
echo.
echo.
:Set_localTemp
setlocal enabledelayedexpansion
:Set_NetConnectionID
rem 获取设置网络连接名称
echo.
echo 选择网络连接名称
echo.
set "str=DefaultIPGateway^,IPAddress^,DNSServerSearchOrder^,IPSubnet^,DHCPEnabled"
for /f "skip=1tokens=1*" %%i in ('wmic Nic where "Manufacturer<>'Microsoft' and NetConnectionStatus='2'" get Index^,NetConnectionID^') do (
for /f "tokens=1* delims=:" %%j in ("%%j") do (
set $%%i=%%j
echo.
echo 适配器_名_NName: %%j
set "NetConnectionName=%%j"
for /f "delims=" %%a in ('powershell "'%%j'.Trim()"') do set "NetConnectionName=%%a"
for /f "tokens=1-3delims={}," %%a in ('wmic Nicconfig where "Index='%%i'" get %str% /value') do (
for /f %%c in (%%c) do if /i "%%a" == "DNSServerSearchOrder=" set "DNS2=%%c"
for /f %%c in ("%%a%%~b") do set "%%c"
)
if /i "!DHCPEnabled!" == "TRUE" (
echo 适配器_IP_模式 : 自动
) else echo 适配器_IP_模式 : 手动
IF not defined Net_IP set Net_IP=!IPAddress!
echo 适配器_IP_地址 : !IPAddress! 预置_IP_地址 : !Net_IP_Diy!
IF not defined Net_MASK set Net_MASK=!IPSubnet!
echo 适配器_子网掩码: !IPSubnet! 预置_子网掩码: !Net_MASK!
IF not defined Net_gateway set Net_gateway=!DefaultIPGateway!
echo 适配器_默认网关: !DefaultIPGateway! 预置_默认网关: !Net_gateway!
IF not defined Net_dnsPra set Net_dnsPra=!DNSServerSearchOrder!
echo 适配器_首选_DNS: !DNSServerSearchOrder! 预置_首选_DNS: !Net_dnsPra!
IF defined dns2 set Net_dns2=!DNS2! &echo 适配器_备用_DNS :!DNS2! 预置_备用_DNS: !Net_dns2!
)
)
echo.
echo.
echo 请输入数字选择下一步操作
echo 1:设置 IP
echo 2:清空 IP
echo 3:DNS固定
echo 4:DNS清空
echo ============= 按0直接退出 =============
set /P var=":"
if %var%==1 goto ipstatic
if %var%==2 goto ipdhcp
if %var%==3 goto dnsstatic
if %var%==4 goto dnsdhcp
if %var%==0 exit
echo 错误:非法输入!
goto start
:ipstatic
echo "%NetConnectionName%"
echo 设置IP...
netsh interface ipv4 set address name="%NetConnectionName%" source=static %Net_IP_Diy% %net_MASK% %Net_gateway%
ipconfig /flushdns
echo **IP设置为%Net_IP_Diy%,子网掩码设置为%net_MASK%,默认网关设置为%Net_gateway%,设置成功**
echo ------------------------------------------
goto start
:ipdhcp
netsh interface ip set address name="%NetConnectionName%" source=dhcp
ipconfig /flushdns
echo **IP设置为DHCP获取,设置成功**
echo ------------------------------------------
goto start
:dnsstatic
echo 设置DNS...
netsh interface ipv4 set dns name="%NetConnectionName%" static addr=%Net_dnsPra% register=PRIMARY
netsh interface ipv4 add dns name="%NetConnectionName%" addr=%Net_dnsOrder% index=2
ipconfig /flushdns
echo **首选DNS设置为%Net_dnsPra%,备用DNS设置为%Net_dnsOrder%,设置成功**
echo ------------------------------------------
goto start
:dnsdhcp
echo 清除DNS...
netsh interface ip delete dns "%NetConnectionName%" all
ipconfig /flushdns
echo **DNS设置为自动获取,设置成功**
echo ------------------------------------------
goto start
作者: babboyshi 时间: 2025-4-9 16:14
回复 2# 北极奇熊
我想自动设定固定IP,例如我想固定ip是192.168.6.6,你这个好像是每次都需要自己设定ip。
作者: yyz219 时间: 2025-4-9 16:40
回复 3# babboyshi
看看类似这样行不行?
@echo off
title 静态IP设置
set name=本地连接
set IP=192.168.1.104
set mask=255.255.255.0
set gw=192.168.1.1
set dns=221.5.88.188
set dns2=210.21.4.130
netsh int ip set addr name="%name%" source=static addr=%IP% mask=%mask% gateway=%gw% gwmetric=1
netsh int ip set dns name="%name%" source=static addr=%dns% register=primary
netsh int ip add dns name="%name%" addr=%dns2%
netsh interface ip set wins name="%name%" source=static addr=none
echo 静态IP设置完成
pause
作者: babboyshi 时间: 2025-4-9 16:51
回复 4# yyz219
运行后,出现错误提示
文件名、目录名或卷标语法不正确。
文件名、目录名或卷标语法不正确。
文件名、目录名或卷标语法不正确。
文件名、目录名或卷标语法不正确。
欐
作者: yyz219 时间: 2025-4-9 16:59
本帖最后由 yyz219 于 2025-4-9 17:11 编辑
回复 5# babboyshi
set name=本地连接——————要查一下你的电脑里面叫做什么名字
作者: ygqiang 时间: 2025-4-9 18:29
ip地址-自动获取- @echo off & setlocal enabledelayedexpansion
- echo 代码开始
-
- echo 65001编码获取: > nul
- chcp 65001 >nul
-
- for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
- set "str=%%a"
- for /f "tokens=*" %%b in ("!str:~46!") do set interfaceName=%%b
- )
-
- rem 代码保存为ansi编码的bat文件--显示乱码
- rem 代码保存为编码utf-8编码的bat文件--正常
- echo,网卡名称: "%interfaceName%"
- pause & cls
-
- chcp 936 > nul
- echo 936编码输出: > nul
-
- rem 代码保存为ansi编码的bat文件---正常
- rem 代码保存为编码utf-8编码的bat文件--显示乱码
- echo,网卡名称: "%interfaceName%"
- pause & cls
-
- set "macname=%interfaceName%"
-
- netsh int ip set dns "%macname%" dhcp >nul
- netsh int ip set address name="%macname%" source=dhcp
- netsh interface ip set wins name="%macname%" source=dhcp
-
- ipconfig /renew & cls & ipconfig /flushdns & cls
- echo 设置成功。& 1pause & cls & exit /b
复制代码
作者: ygqiang 时间: 2025-4-9 18:30
ip地址-固定修改为(192.168.8.20)- @echo off
- title IP设置
- mode con lines=7 cols=50
- setlocal enabledelayedexpansion
- color a
-
-
- set ip=192.168.8.20
- set mask=255.255.255.128
- set "gateway=192.168.8.1"
-
- set "DNS1= "
- set "DNS2= "
- set isIP=false
-
- set "online="
- set "tips="
- set "s="
-
- :input_ip
- cls
- echo.&echo.
-
- 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 "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
复制代码
作者: 北极奇熊 时间: 2025-4-10 09:38
回复 3# babboyshi
你的意思是手动设置固定IP是不是?
作者: babboyshi 时间: 2025-4-10 21:11
回复 babboyshi
set name=本地连接——————要查一下你的电脑里面叫做什么名字
yyz219 发表于 2025-4-9 16:59 
我已经知道电脑叫什么名字,我的叫以太网,问题还是出现上述的错误,我直接用命令行执行是可以,但是变成批处理命令就不行了
作者: ygqiang 时间: 2025-4-10 21:51
回复 10# babboyshi
http://www.bathome.net/thread-70775-1-1.html
作者: babboyshi 时间: 2025-4-16 09:55
本帖最后由 babboyshi 于 2025-4-16 09:56 编辑
回复 babboyshi
ygqiang 发表于 2025-4-10 21:51 
按照这个执行,ip地址没有改变
作者: babboyshi 时间: 2025-4-16 09:57
回复 8# ygqiang
复制你的代码,用bat运行了,发现无法修改IP地址
作者: ygqiang 时间: 2025-4-16 10:38
回复 13# babboyshi
代码加 pause判断下是哪里的问题
你是单网卡?主机什么配置?什么系统?
作者: flashercs 时间: 2025-4-16 11:02
bat文件需要保存编码ANSI,win10/win11记事本默认编码是utf8;这就是为什么"我直接用命令行执行是可以,但是变成批处理命令就不行了"
作者: babboyshi 时间: 2025-4-16 11:33
回复 11# ygqiang
你的代码好复杂,还有我发现一个问题,我就是安装了虚拟机,虚拟机有两个网卡,可能是这样造成了无法写入的情况
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |