批处理脚本中的IF语句

时间:2012-03-23 12:58:01

标签: if-statement batch-file

我正在编写一个批处理脚本,根据用户输入在ip地址之间切换。 该脚本的核心功能是有效的,但是我想在每个函数中添加一些检查以检查已经应用了哪个设置并相应地给出响应。

我目前的代码是:

@ECHO OFF
::Change Static IP address for simulator or network connection

:MAINMENU choose option from menu
::Set Current IP Address

for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i

ECHO.
ECHO. Set Workstation...........1
ECHO. Set Simulator.............2
ECHO. Quit (no further action)..Q
ECHO.
choice /c:Q21
ECHO.

IF ERRORLEVEL 3 GOTO WORK
IF ERRORLEVEL 2 GOTO SIM
IF ERRORLEVEL 1 GOTO EOF

::Change IP To network settings
:WORK
IF "LOCAL_IP"=="192.168.1.4" (
ECHO. You are already in this mode
GOTO MAINMENU 
) ELSE
(echo "Setting Static IP Information" 
netsh int ip set address name="Local Area Connection" source=static addr=192.168.1.4 mask=255.255.255.0 gateway=192.168.1.254 gwmetric=1 
netsh int ip set dns name="Local Area Connection" source=static addr=192.168.1.1

echo IP Address Set
goto MAINMENU)

::Set Simulator IP Address
:SIM
IF "LOCAL_IP"=="192.168.4.1" (
ECHO. You are already in this mode
GOTO MAINMENU
) ELSE
echo "Setting Static IP Information"
netsh int ip set address name="Local Area Connection" source=dhcp
netsh int ip set dns name="Local Area Connection" source=dhcp
netsh int ip set address name="Local Area Connection" source=static addr=192.168.4.1 mask=255.255.255.0
echo "Setting Static IP Information"
goto MAINMENU

:EOF
pause

我无法获取IF语句来比较当前的IP地址和我想要设置的IP地址。 任何人都可以建议我出错的地方或者提出一些想法来解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我猜LOCAL_IP是一个环境变量,要使用它们,您必须将该名称括在%中,以便您的代码为:

IF "%LOCAL_IP%"=="192.168.1.4" (

IF "%LOCAL_IP%"=="192.168.4.1" (

注意:您在哪里将该环境变量设置为实际值?