2014-02-17 133 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