Windows 批处理程序正在跳过转到块
我正在批量编写一些东西,我需要使用GOTO,但它不是转到正确的GOTO,而是转到下一个标签/类,而不是正确的标签/类 我试过不用冒号就使用它,但仍然找不到解决方案Windows 批处理程序正在跳过转到块,windows,batch-file,Windows,Batch File,我正在批量编写一些东西,我需要使用GOTO,但它不是转到正确的GOTO,而是转到下一个标签/类,而不是正确的标签/类 我试过不用冒号就使用它,但仍然找不到解决方案 @echo off title Nexus Generator color 0a goto :signin :signin echo ===================================== echo Welcome to NEXUS GENERATOR! echo Please enter your KE
@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
我希望当输入测试时,它将转到signedin,而当输入任何其他内容时,它将转到error。- 你也需要把一些“引文”和一些“引文”进行比较
- goto:避免执行下一行的地方,比如goto:eof
@echo关闭
颜色0a
标题连接生成器
回音/=====================================
echo/欢迎来到NEXUS GENERATOR^!
echo/请输入您的密钥^!
回音/=====================================
设置/p“id=输入键:”
如果/i“%id%”==“测试”转到:已签名
:错误
回声/嗯,哈哈
后藤:eof
:签名
cls
回声/lol
暂停>nul
在一个简短版本中:
@echo关闭&color 0a
标题连接生成器
回音/=====================================
echo/欢迎来到NEXUS GENERATOR^!
echo/请输入您的密钥^!
回音/=====================================
设置/p“id=输入键:”
echo/%id%| findstr/lic:“test”2>num&&goto:signedin
:错误
echo/uh lol&goto:eof
:签名
cls&echo/lol&pause>nul
鉴于您只有两个要转到的结果,我想说您不需要else语句,因为只有当if
语句匹配时,转到才会发生,否则它将直接导致错误。然而,我们需要测试操作符的每一边是否相等。当前您正在测试Test==“Test”
。请注意,一个是引号,另一个不是,您希望有一个精确的匹配,因此您需要双引号您的变量<代码>%id%=“测试”
:
也就是说,除非完全需要,否则我不喜欢使用goto
语句,因此我们可以在if
和else
语句之后运行代码块:
@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" (
cls
echo You're now signed in!!
) else (
cls
echo Oops, you entered "%id%" instead of "Test"
)
pause >nul
比较运算符两侧的字符串必须匹配才能获得
True
条件,因此需要引用%variable%如果/i
使比较大小写不敏感,那么它会变成这样吗?如果/i%id%==“Test”,则转到%signedin%else转到%error%i建议阅读和上的答案。还需要引用变量<代码>如果“%id%”=“Test”goto..并且没有函数,则批处理函数。如果“%id%”=“Test”(goto:signedin)else(goto:error)
则被视为带有参数的可执行文件goto:signedin else goto:error
。如果没有,则执行的指令是goto:signedin else goto:error
,该指令应操作第一个goto
,并忽略其余指令。在goto destination
子句的括号中插入cmd
可以成功地解决不明确的语法。使用此代码时,输入其他内容,然后测试会使程序崩溃。如果输入其他内容,则测试仍会使程序崩溃。我明白了,replace==to eq in if,,感谢您的实时回复!按照您的指示仍然崩溃?向var添加一些字符,所以,如果用户不小心按下了一个键,而不是字符,比如一个操作符或其他什么。任何建议,我在这里,谢谢!对不起,我的英语不好。
@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" (
cls
echo You're now signed in!!
) else (
cls
echo Oops, you entered "%id%" instead of "Test"
)
pause >nul