Batch file 如何在If中设置变量值

Batch file 如何在If中设置变量值,batch-file,Batch File,嗨,我现在做一个简单的批处理文件,我试图在最后添加正确的答案编号,但它一直说零,因为选择答案时变量值没有改变。下面是我的代码 @echo off title Game One color 1f ::############################# :one set correctn=0 set correctn2=0 cls echo What is 2 + 2? echo. echo. echo A) 6 echo B) 4 echo C) 49 echo D) 17 echo. e

嗨,我现在做一个简单的批处理文件,我试图在最后添加正确的答案编号,但它一直说零,因为选择答案时变量值没有改变。下面是我的代码

@echo off
title Game One
color 1f
::#############################
:one
set correctn=0
set correctn2=0
cls
echo What is 2 + 2?
echo.
echo.
echo A) 6
echo B) 4
echo C) 49
echo D) 17
echo.
echo.
echo Type the correct answer.
set /p ch1=
echo.
echo.
if not defined ch1 (goto one)
if %ch1%==A goto no
if %ch1%==A correctn=0
if %ch1%==B goto yes
if %ch1%==B correctn=1
if %ch1%==C goto no
if %ch1%==C correctn=0
if %ch1%==D goto no
if %ch1%==D correctn=0
pause>null
::#########################################
:no
cls
echo Sorry, that answer is incorrect.
echo.
echo.
echo The correct choice was B, which was 4.
pause>null
goto two
::#########################################
:yes
cls
echo You are correct. Congratulations.
echo Press any key to continue.
pause>null
goto two
::##########################################
:two
cls
echo What is 100 divided by 2?
echo A) 45
echo B) 50
echo C) 90
echo D) 17
echo.
echo.
set/p ch2=
echo.
echo.
if not defined ch2 (goto two)
if %ch2%==A goto no2
if %ch2%==A correctn2=0
if %ch2%==B goto yes2
if %ch2%==B correctn2=1
if %ch2%==C goto no2
if %ch2%==C correctn2=0
if %ch2%==D goto no2
if %ch2%==D correctn2=0
echo Invalid Choice, Please Try Again!
pause>null
::#################################
:no2
cls
echo Sorry, that answer is incorrect.
echo.
echo.
echo The correct choice was B, which was 50.
pause>null
::########################################
:yes2
cls
echo You are correct. Congratulations.
echo Press any key to continue.
pause>null
goto end
::######################################
:end
set/a correct=%correctn% + %correctn2%
echo Number of answers correct was %correct%
pause>null

那么,如果已经存在变量,如何更改if语句中的变量值呢?

您需要先设置一个变量,然后转到
。按照当前编写的脚本,首先转到标签
yes
。因此,
如果%ch1%==B set correctn=1,则永远不会到达以下行:

if %ch1%==B goto yes if %ch1%==B set correctn=1 if %ch1%==B goto yes 我建议使用(Windows本机)而不是
set/p
进行单键用户输入,例如:

CHOICE /C abcd
IF %errorlevel%==2 (
    set correctn=1
    goto yes
) else (
    set correctn=0
    goto no
)

您需要先
设置一个变量,然后
转到
。按照当前编写的脚本,首先转到标签
yes
。因此,
如果%ch1%==B set correctn=1,则永远不会到达以下行:

if %ch1%==B goto yes if %ch1%==B set correctn=1 if %ch1%==B goto yes 我建议使用(Windows本机)而不是
set/p
进行单键用户输入,例如:

CHOICE /C abcd
IF %errorlevel%==2 (
    set correctn=1
    goto yes
) else (
    set correctn=0
    goto no
)

您缺少设置关键字。例如,如果%ch1%==A set correct n=0,请使用。不,对不起,我尝试过,但不起作用。但我做了一些事情,使它工作,问题是我的如果的,我改变了它,使它设置的值,然后再进入下一页。但是你帮我找出了集合,所以你缺少集合关键字。例如,如果%ch1%==A set correct n=0,请使用。不,对不起,我尝试过,但不起作用。但我做了一些事情,使它工作,问题是我的如果的,我改变了它,使它设置的值,然后再进入下一页。但是你帮我弄明白了,所以