返回列表 发帖

[网络连接] 请问各位如何用批处理方式设定固定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
请按任意键继续.

回复 11# ygqiang


    你的代码好复杂,还有我发现一个问题,我就是安装了虚拟机,虚拟机有两个网卡,可能是这样造成了无法写入的情况

TOP

bat文件需要保存编码ANSI,win10/win11记事本默认编码是utf8;这就是为什么"我直接用命令行执行是可以,但是变成批处理命令就不行了"
微信:flashercs
QQ:49908356

TOP

回复 13# babboyshi


   代码加 pause判断下是哪里的问题

你是单网卡?主机什么配置?什么系统?

TOP

回复 8# ygqiang
复制你的代码,用bat运行了,发现无法修改IP地址

TOP

本帖最后由 babboyshi 于 2025-4-16 09:56 编辑
回复  babboyshi
ygqiang 发表于 2025-4-10 21:51



   按照这个执行,ip地址没有改变

TOP

TOP

回复  babboyshi

set name=本地连接——————要查一下你的电脑里面叫做什么名字
yyz219 发表于 2025-4-9 16:59



   我已经知道电脑叫什么名字,我的叫以太网,问题还是出现上述的错误,我直接用命令行执行是可以,但是变成批处理命令就不行了

TOP

回复 3# babboyshi


    你的意思是手动设置固定IP是不是?

TOP

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 :eofCOPY

TOP

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 /bCOPY

TOP

本帖最后由 yyz219 于 2025-4-9 17:11 编辑

回复 5# babboyshi

set name=本地连接——————要查一下你的电脑里面叫做什么名字
我是小白,希望老师多多帮助

TOP

回复 4# yyz219
运行后,出现错误提示

    文件名、目录名或卷标语法不正确。
文件名、目录名或卷标语法不正确。
文件名、目录名或卷标语法不正确。
文件名、目录名或卷标语法不正确。

TOP

回复 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
我是小白,希望老师多多帮助

TOP

回复 2# 北极奇熊


    我想自动设定固定IP,例如我想固定ip是192.168.6.6,你这个好像是每次都需要自己设定ip。

TOP

返回列表