Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理程序正在跳过转到块_Windows_Batch File - Fatal编程技术网

Windows 批处理程序正在跳过转到块

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

我正在批量编写一些东西,我需要使用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
我希望当输入测试时,它将转到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