2014-02-17 58 views
0
@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个参数。我也尝试过使用不同的变量名称。批处理文件的IP配置

输入有效的IPv4地址,子网掩码和网关地址后,我得到的错误是:

无效的地址参数< 1>:必须是有效的IPv4地址

回答

1

您的问题是延迟扩展。在块开始执行之前,代码块内的所有变量读取(括号内的代码)将被替换为变量中的值。如果块内部的变量发生更改,则无法检索该新值,因为所有对变量的读取都被替换为值。要解决这个问题,启用延迟扩展,并且在需要延迟读取的变量中,将!var%sintax更改为!var!指示解析器延迟读取直到执行时间。

@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