批处理命令 多条件判断后 显示出来结果
一个bat文档里,前面已经编写了一部分,是一段关于简单运算的计算器因为想要重复使用计算,前部分用了一个循环标记@echooff:标记1##前部分代码##goto标记1pa...
一个bat文档里,前面已经编写了一部分,是一段关于简单运算的计算器
因为想要重复使用计算,前部分用了一个循环标记
@echo off
:标记1
##前部分代码##
goto 标记1
pause
前部分运行正常,结果计算显示出4个参数 n1,n2,n3,n4
后部分我想实现
条件1:n1<3 ,
条件2:n1>=3 ,
条件3:n2>=n3,
条件4:n2>=n4
条件5:n3>n2
条件6:n4>n2
满足条件1 输出显示一句话a
共同满足条件2&&条件3 输出显示一句话b
共同满足条件2&&条件4&&条件5 输出显示一句话c
共同满足条件2&&条件6 输出显示一句话d
要求最终只显示abcd其中一个结果:
我使用了类似
@echo off
:标记1
##代码前半段##
if %n1% LSS 3 goto:标记2
:标记2
echo 结果a
echo.
goto :eof
if %n1% GEQ 3 && %n3% GEQ %n1% && %n1% LSS %n4% goto:标记4
:标记4
echo 结果c
echo.
goto :eof
goto 标记1
pause
这样的语句 结果文档就自动关闭了 希望高人解答 展开
因为想要重复使用计算,前部分用了一个循环标记
@echo off
:标记1
##前部分代码##
goto 标记1
pause
前部分运行正常,结果计算显示出4个参数 n1,n2,n3,n4
后部分我想实现
条件1:n1<3 ,
条件2:n1>=3 ,
条件3:n2>=n3,
条件4:n2>=n4
条件5:n3>n2
条件6:n4>n2
满足条件1 输出显示一句话a
共同满足条件2&&条件3 输出显示一句话b
共同满足条件2&&条件4&&条件5 输出显示一句话c
共同满足条件2&&条件6 输出显示一句话d
要求最终只显示abcd其中一个结果:
我使用了类似
@echo off
:标记1
##代码前半段##
if %n1% LSS 3 goto:标记2
:标记2
echo 结果a
echo.
goto :eof
if %n1% GEQ 3 && %n3% GEQ %n1% && %n1% LSS %n4% goto:标记4
:标记4
echo 结果c
echo.
goto :eof
goto 标记1
pause
这样的语句 结果文档就自动关闭了 希望高人解答 展开
2个回答
展开全部
先提三点值得注意:
一
if %n1% LSS 3 goto:标记2
:标记2
这种,前句的判断没意义,因为无论判断是否满足都会顺序执行
二
&&是命令连接符,要求其前后都是完整合格的命令,前命令成功时连续执行后命令所以
if %n1% GEQ 3 && %n3% GEQ %n1% && %n1% LSS %n4% goto:标记4
是不合格的命令
三
注意到用到goto :eof
那么批处理就算结束了,那么之前就算写得正确也退出了,因此之前显示的内容会来不及看,除非之前没什么要显示的,要注意凡显示内容就要考虑是否留有看的时间,另外,逻辑上是否冲突或不妥没仔细看,列的几判断全都goto :eof了, 最后的goto 标记1是否还有意义我不作结论
写个部分的参考代码,没仔细琢磨,有几对条件是相反的1~2、3~5、4~6,琢磨得好就写得简单点
if %n1% lss 3 (echo 结果 a)else (
if %n2% gtr %n3% echo 结果 b&goto :next
if %n2% geq %n4% if %n3% gtr %n2% echo 结果 c
if %n4% gtr %n2% echo 结果 d)
:next
set/p ag=继续 ? (按y继续,其它退出) :
if /i "%ag%"=="y" goto 标记1
一
if %n1% LSS 3 goto:标记2
:标记2
这种,前句的判断没意义,因为无论判断是否满足都会顺序执行
二
&&是命令连接符,要求其前后都是完整合格的命令,前命令成功时连续执行后命令所以
if %n1% GEQ 3 && %n3% GEQ %n1% && %n1% LSS %n4% goto:标记4
是不合格的命令
三
注意到用到goto :eof
那么批处理就算结束了,那么之前就算写得正确也退出了,因此之前显示的内容会来不及看,除非之前没什么要显示的,要注意凡显示内容就要考虑是否留有看的时间,另外,逻辑上是否冲突或不妥没仔细看,列的几判断全都goto :eof了, 最后的goto 标记1是否还有意义我不作结论
写个部分的参考代码,没仔细琢磨,有几对条件是相反的1~2、3~5、4~6,琢磨得好就写得简单点
if %n1% lss 3 (echo 结果 a)else (
if %n2% gtr %n3% echo 结果 b&goto :next
if %n2% geq %n4% if %n3% gtr %n2% echo 结果 c
if %n4% gtr %n2% echo 结果 d)
:next
set/p ag=继续 ? (按y继续,其它退出) :
if /i "%ag%"=="y" goto 标记1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询