批处理文件%errorlevel%在if嵌套下的返回值问题
本机当前IP为192.168.1.254,目的是想通过IP来判断当前网段以便做其它操作。现在遇到%errorlevel%在if嵌套下的返回值不能改变,也就是继承第一个fi...
本机当前IP为192.168.1.254,目的是想通过IP来判断当前网段以便做其它操作。现在遇到%errorlevel%在if嵌套下的返回值不能改变,也就是继承第一个find时的值,为什么?当如何修改?
@echo off
@ipconfig >ip.txt
@find "192.168.2" ip.txt >nul
if %errorlevel%==1 (
@find "192.168.1" ip.txt >nul
if %errorlevel%==1 (
echo 当前为未知网段设置!!!
) else (
echo 当前为1网段设置!!!
)
) else (
echo 当前为2网段设置!!!
) 展开
@echo off
@ipconfig >ip.txt
@find "192.168.2" ip.txt >nul
if %errorlevel%==1 (
@find "192.168.1" ip.txt >nul
if %errorlevel%==1 (
echo 当前为未知网段设置!!!
) else (
echo 当前为1网段设置!!!
)
) else (
echo 当前为2网段设置!!!
) 展开
2个回答
展开全部
@echo off
setlocal enabledelayedexpansion
@ipconfig >ip.txt
@find "192.168.2." ip.txt >nul
if %errorlevel%==1 (
@find "192.168.1." ip.txt >nul
if !errorlevel!==1 (
echo 当前为未知网段设置!!!
) else (
echo 当前为1网段设置!!!
)
) else (
echo 当前为2网段设置!!!
)
pause
在一条完整的语句中或者说()中,两个相同的变量会被预处理,就变成了%errorlevel%=1,后面的%errorlevel%也等于1.启用延迟变量扩展后就可以正确处理.在for命令也是类似方法.
或者
@echo off
@ipconfig >ip.txt
@find "192.168.2." ip.txt >nul
if errorlevel==1 (
@find "192.168.1." ip.txt >nul
if errorlevel==1 (
echo 当前为未知网段设置!!!
) else (
echo 当前为1网段设置!!!
)
) else (
echo 当前为2网段设置!!!
)
pause
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询