@echo off
set /p option=(1) Edit IP (2) Enable DHCP:
if %option%==1 (
set /p IP=New IP-Address:
set /p MASK=New Network Mask:
set /p GATE=New Gateway Address:
netsh interface ip set address name="LAN" static %IP% %MASK% %GATE% 1
)
if %option%==2 (
netsh interface ip set address name="LAN" source=dhcp
)
pause
程序的DHCP部分工作得很好。 NIC的名称是“LAN”。我已尝试在设置IP上使用和不使用1参数。我也试过不同的变量名。
输入有效的ipv4地址,子网掩码和网关地址后得到的错误是:
无效地址参数< 1>:必须是有效的IPv4地址
答案 0 :(得分:1)
你的问题是延迟扩张。在块开始执行之前,代码块内的所有变量读取(括号内的代码)将替换为变量中的值。如果在块内部更改了变量,则无法检索该新值,因为对变量的所有读取都替换为值。要解决此问题,请启用延迟扩展,并在需要延迟读取的变量中,使用!var更改%var%sintax!指示解析器将读取延迟到执行时间。
@echo off
set /p option=(1) Edit IP (2) Enable DHCP:
if %option%==1 (
set /p IP=New IP-Address:
set /p MASK=New Network Mask:
set /p GATE=New Gateway Address:
setlocal enabledelayedexpansion
netsh interface ip set address name="LAN" static !IP! !MASK! !GATE! 1
endlocal
)
if %option%==2 (
netsh interface ip set address name="LAN" source=dhcp
)
pause