GOTO和IF语句无法正常工作

时间:2019-09-04 22:41:08

标签: batch-file command-line

我有一个批处理游戏,特别是对一个人有一些问题,当她(那个人)不在附近时,我总是会更改文件,这有点令人惊讶。 问题是我一直在显示不同类型的问题,但有时GOTO或IF语句只是无法正常工作,它只是沿行显示或退出文件。

@ECHO OFF
setlocal EnableDelayedExpansion
ECHO.
ECHO "i just skipped all this echo for you"
pause>nul
:choice
cls
set /p c=Question 1[y/n]
if /I "%c%" EQU "Y" goto :somewhere
if /I "%c%" EQU "N" goto :somewhere_else
goto :choice

:somewhere
cls
cd "-somewhere in my pc-"
start "-the file-"
cls
goto :somewhere1

:somewhere1
cls
echo.
echo "skip"
pause>NUL
goto :somewhere2

:somewhere2
cls
echo.
set /p c1=question 2
if /I "!c1!"== "option1" goto :correct 
if not /I "!c1!"== "option1" goto :somewhere_else1

:correct
cls
echo.
echo "skip"
echo.
echo enter to exit
pause>nul
exit

:somewhere_else1
cls
echo.
echo bad answer
pause>nul
goto :somewhere2

这是我的问题:

问您一个问题

:choice
cls
set /p c=Question 1[y/n]
if /I "%c%" EQU "Y" goto :somewhere
if /I "%c%" EQU "N" goto :somewhere_else
goto :choice

它只能正常工作,过去无法使用,但是我神奇地修复了它,不知道自己在做什么。 但是然后我只是想将其放大并添加下一行:

:somewhere2
cls
echo.
set /p c1=question 2
if /I "!c1!"== "option1" goto :correct 
if not /I "!c1!"== "option1" goto :somewhere_else1

现在文件正在完美执行“:correct”部分,但没有执行“:somewhere_else1”。在“:somewhere_else1”的情况下,它只是退出文件。过去也要退出正确的文件,但是我又修复了它,只是再次写入它。

1 个答案:

答案 0 :(得分:2)

问题出在您的行protected $table = "order_product";

if not /I "!c1!"== "option1" goto :somewhere_else1必须早于/I

not

尽管我还应该提到,在此示例中无需使用if /I not "!c1!"== "option1" goto :somewhere_else1 而不是!

您应该通读this link,以获取有关如何自己将来解决这些错误的一些见解,也许还可以了解this link的良好实践。