我的批处理脚本出了什么问题?

时间:2015-04-20 21:13:52

标签: batch-file

我必须在Maroon 5音乐中做一个关于比喻语言的项目,并决定进行测验。我想知道有多少问题是正确的。到目前为止,这是我的工作,某处有一个错误,但我不知道它是什么。

@echo off
color 0f
:START
set Q=Q
cls
echo Maroon 5 Figuratve Language
echo ---------------------------
echo Options (Type a number and press ENTER):
echo 1) Take quiz
echo 2) Change color scheme
set /p Choice= 
if %Choice% == 1 GOTO GAME
if %Choice% == 2 GOTO COLOR
:COLOR
cls
echo Choose a color scheme.
echo 1) Black BG, White text
echo 2) White BG, black text
set /p color= 
if %color% == 1 GOTO 0F
if %color% == 2 GOTO F0
:0F
color 0f
GOTO start
:F0
color f0
GOTO start
:GAME
set qr=0
cls
goto Q1
:Q1
set qn=1
cls
echo What type of figurative language is "I can smell your scent from miles?"
echo a) Simile
echo b) Hyperbole
echo c) Metaphor
echo d) Personification
set /p Q1=
if %Q1% == b goto CORRECT
if NOT %Q1% == b goto INCORRECT
:CORRECT
set /a qr=%qr%+1
set /a qn=%qn%+1
goto %Q%%qn%
:INCORRECT
cls
echo Incorrect...
pause
set /a qn=%qn%+1
goto %Q%%qn%
:Q2
echo testing
echo %qn%
echo %qr%
pause

1 个答案:

答案 0 :(得分:0)

我可以看到一个错误(代码中可能还有更多但是这个是我能看到的第一个^^)! :D它在goto %Q%%qn%行。我很久以前就回答了类似的问题:How to put variable value inside another variable name in batch?

关键是,当您在解析时评估变量时,解释器不知道%Q%%qn%的值是多少。您必须在脚本的开头添加SETLOCAL EnableDelayedExpansion,并使用!...!而不是%...%包围变量。考虑到目前为止对变量所做的任何更改,这将强制解释器在运行时评估值。