批处理程序正在跳过GOTO块

时间:2019-05-06 04:20:15

标签: windows batch-file

我正在用BATCH编写一些东西,我需要使用GOTO,但不是转到正确的GOTO,而是转到下一个标签/类,而不是正确的标签/类。

我尝试在没有冒号的情况下使用它,但仍然无法解决问题。

@echo off 
title Nexus Generator
color 0a 
goto :signin  

:signin
echo =====================================
echo Welcome to NEXUS GENERATOR!
echo Please enter your KEY!
echo =====================================
set /p id="Enter Key: "
if %id% == "Test" then goto :signedin else goto :error

:error
echo uh lol

:signedin
cls
echo lol
pause >nul

我希望输入TEST会进入登录状态,输入其他任何内容都会出错。

2 个答案:

答案 0 :(得分:1)

  • 您还需要将一些“用引号引起来”与一些“用引号引起来”进行比较,

  • goto:避免执行下一行的地方,例如goto:eof

@echo off 

color 0a
title Nexus Generator

echo/=====================================
echo/Welcome to NEXUS GENERATOR^!
echo/Please enter your KEY^!
echo/=====================================

set /p "id=Enter Key: "
if /i "%id%" == "test" goto :signedin

:error
echo/uh lol
goto :eof

:signedin
cls 
echo/lol 
pause >nul

在一个简短版本中:

@echo off & color 0a 
title Nexus Generator
echo/=====================================
echo/Welcome to NEXUS GENERATOR^!
echo/Please enter your KEY^!
echo/=====================================
set /p "id=Enter Key: "
echo/%id%|findstr /lic:"test" 2>nul && goto :signedin
:error
echo/uh lol & goto :eof
:signedin
cls & echo/lol & pause >nul

答案 1 :(得分:0)

由于您只有2个要onComplete的结果,我会说您不需要else语句,因为goto仅在goto语句匹配时才会出现,否则它只会导致错误。但是,我们需要测试运算符的每一边是否相等。目前,您正在测试if。请注意,其中一个被引用,另一个未被引用,并且您希望具有完全匹配的内容,因此您需要对变量加双引号。 Test == "Test"

"%id%"=="Test"

也就是说,除非完全需要,否则我不愿使用@echo off title Nexus Generator color 0a goto :signin :signin echo ===================================== echo Welcome to NEXUS GENERATOR! echo Please enter your KEY! echo ===================================== set /p id="Enter Key: " if /i "%id%" == "Test" goto :signedin echo Oops, you entered "%id%" instead of "Test" goto :eof :signedin cls echo You're now signed in!! pause >nul 语句,因此我们可以在gotoif语句之后运行代码块:

else