If statement 批处理脚本中的IF语句
我正在编写一个批处理脚本,根据用户输入在ip地址之间切换。 脚本的核心功能正常工作,但我想在每个函数中添加一些检查,以检查已应用的设置,并给出相应的响应 我目前的代码是:If statement 批处理脚本中的IF语句,if-statement,batch-file,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
@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地址进行比较时遇到问题。
有人能告诉我哪里出了问题,或者提供一些想法让这项工作正常进行吗?我想
LOCAL\u IP
是一个环境变量,要使用它们,您必须将名称括在%
中,这样您的代码将是:
IF "%LOCAL_IP%"=="192.168.1.4" (
及
注意:您在哪里将该环境变量设置为实际值?我猜
LOCAL\u IP
是一个环境变量,要使用它们,您必须将名称括在%
中,这样您的代码将是:
IF "%LOCAL_IP%"=="192.168.1.4" (
及
注意:您在哪里将该环境变量设置为实际值?每次调用菜单时,我都会将其设置为除终止脚本的函数之外的每个函数返回菜单
for/F“tokens=2 delims=:”(“'ipconfig | findstr IP | findstr 192.”)中的%%i是否设置本地IP=%%i
我意识到获取IP地址的代码是错误的。。我在tokens=2之前添加了usebackq
,本地_ip变量现在正在获取一个地址。。。现在是故事的转折点,我在if语句中得到了一个无效的语法错误。我还添加了Adriano建议的更改。请发布您的更新代码!提示:移除@echo off,看看会发生什么!第1部分:@ECHO OFF::更改模拟器或网络连接的静态IP地址:主菜单从菜单中选择选项::设置当前IP地址/f“usebackq tokens=2 delims=:”%%f在(
ipconfig^ | findstr/c:“IPv4地址”)中设置本地IP=%%f::菜单ECHO。回声。设置工作站……….1回声。设置模拟器…………2回波。退出(无进一步操作)…Q ECHO。选择/c:Q21 ECHO。IF ERRORLEVEL 3 GOTO WORK IF ERRORLEVEL 2 GOTO SIM IF ERRORLEVEL 1 GOTO EOF第2部分:将IP更改为网络设置:如果“%LOCAL_IP%”==“192.168.1.4”(ECHO.您已经处于此模式和GOTO主菜单)则工作,否则(ECHO“设置静态IP信息”和&netsh int IP set address name=“局域网连接”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转到主菜单):设置模拟器ip Address:SIM如果“%Local_ip%”=“192.168.4.1”(echo.您已经处于此模式转到主菜单)ELSEI每次调用菜单时都会设置它,因为除了终止脚本的函数外,每个函数都会返回菜单for/F“tokens=2 delims=:”(“'ipconfig | findstr IP | findstr 192.”)中的%%i是否设置本地IP=%%i
我意识到获取IP地址的代码是错误的。。我在tokens=2之前添加了usebackq
,本地_ip变量现在正在获取一个地址。。。现在是故事的转折点,我在if语句中得到了一个无效的语法错误。我还添加了Adriano建议的更改。请发布您的更新代码!提示:移除@echo off,看看会发生什么!第1部分:@ECHO OFF::更改模拟器或网络连接的静态IP地址:主菜单从菜单中选择选项::设置当前IP地址/f“usebackq tokens=2 delims=:”%%f在(
ipconfig^ | findstr/c:“IPv4地址”)中设置本地IP=%%f::菜单ECHO。回声。设置工作站……….1回声。设置模拟器…………2回波。退出(无进一步操作)…Q ECHO。选择/c:Q21 ECHO。IF ERRORLEVEL 3 GOTO WORK IF ERRORLEVEL 2 GOTO SIM IF ERRORLEVEL 1 GOTO EOF第2部分:将IP更改为网络设置:如果“%LOCAL_IP%”==“192.168.1.4”(ECHO.您已经处于此模式和GOTO主菜单)则工作,否则(ECHO“设置静态IP信息”和&netsh int IP set address name=“局域网连接”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 main menu)::设置模拟器ip Address:SIM如果“%Local_ip%”=“192.168.4.1”(echo.您已经处于此模式,转到main menu)其他