在整个文件中记住“if”语句

时间:2015-12-09 16:37:18

标签: batch-file if-statement

所以基本上我做了一个批处理文件,好像变量%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语句在整个批处理文件中生效,无论它在哪个标签上。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您每次都需要检查%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程序中维护所有逻辑。