基本上,我创建了一个批处理文件,好像变量%hp%低于0,它就结束了。
@echo off
:start
set /a hp=10
if %hp% LEQ 0 goto ded
:choose
cls
echo %hp%
echo Gain or lose health?
echo 1) Gain
echo 2) Lose
set /p loseorgain=Type Answer Here
if %loseorgain%==1 goto gain
if %loseorgain%==2 goto lose
:lose
set /a hp=%hp%-5
echo You lose 5 hp! You have %hp% left!
pause
goto choose
:gain
set /a hp=%hp%+5
echo You gained +5 hp! You have %hp% left!
pause
goto choose
:ded
echo Ur ded
pause
exit我希望这样,如果%hp%在批处理文件中的任何时候下降到或低于0,它将带您到标签"ded“
相反,一旦它离开:start标签,它就会忘记if语句。
简化:我想让一个if语句在整个批处理文件中产生效果,不管它在哪个标签上。
有办法这样做吗?
发布于 2015-12-09 17:11:45
您每次都需要检查%hp%变量,但是您可以创建一个通用的“过程”来完成这个任务。这个例子应该说明:
@ECHO OFF
SETLOCAL EnableExtensions
SET hp=5
:Loop
SET /A hp-=1
ECHO You have %hp% HP.
CALL :CheckHP
GOTO Loop
:CheckHP
IF %hp% LEQ 0 (
ECHO You are dead.
PAUSE
EXIT
)
ENDLOCAL因此,每次%hp%可能减少时,都会添加行:CALL :CheckHP,这将将控制移到“过程”,“过程”检查该值是否仍然大于0。如果是,控件将返回到创建CALL命令的脚本部分。
您所需要做的就是适当地放置CALL :CheckHP行,并在CheckHP过程中维护所有的逻辑。
https://stackoverflow.com/questions/34184116
复制相似问题