2012-03-23 119 views
0

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

我当前的代码是:

@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地址与一个我想将它设置比较。 任何人都可以建议我去哪里错了或提供一些想法,让这个工作请吗?

回答

2

我猜LOCAL_IP是一个环境变量,使用它们则必须在其内%名称,以便您的代码将是:

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

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

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

+0

我每次调用菜单时都会设置它,因为除了终止脚本之外的每个函数都会返回到菜单。 (''ipconfig | findstr IP | findstr 192.'')SET LOCAL_IP = %% i' – user1288266 2012-03-23 14:30:37

+0

我已经实现了获取IP的代码地址是错误的..我添加'usebackq'之前tokens = 2和local_ip变量现在正在拾取一个地址... 扭曲的故事,现在我得到一个无效的语句错误,现在在if语句。我还添加了Adriano建议的更改。 – user1288266 2012-03-23 17:12:02

+0

请发布我们更新的代码!提示:删除** @回声关闭**看看会发生什么! – 2012-03-23 18:22:19