Ваш оригинальный код с номерами строк:
1 : @ECHO OFF
2 : goto joshua
3 : :joshua
4 : Echo Hello my name is Joshua.
5 : echo What is yours?
6 : set /p name=
7 : cls
8 : Echo Hello %name%.
9 : cls
10: Echo How are you?
11: set /p feeling=
12: cls
13: echo Is this good?
14: echo Im sorry I am still learning human feelings.
15: set /p humanfeelings=Yes/No
16: if %humanfeelings%==Yes goto Good
17: if %humanfeelings%==No goto Bad
18: cls
19: :Good
20: Echo Well that is pleasent.
21: Echo Would you like to play a game %name%?
22: set /p answer=Yes/No
23: if %answer%==Yes goto startmenu
24: if %answer%== No goto quit
25: cls
26: :Bad
27: echo That is not good.
28: echo Would you like to play a game %name%?
29: set /p answera=Yes/No
30: if %answera%==Yes goto startmenu
31: if %answera%== No goto later
32: cls
33: :startmenu
34: start menu.bat
35: cls
36: :later
37: Echo That is fine %name%, maybe later
38: pause
39: exit
- Строка 2:
goto joshua
не требуется, поскольку Джошуа находится на самой следующей строке.
- Строка 9:
cls
стирает предыдущее эхо (скрывает Hello %name%.
)
- Строка 16, 17, 30 и 31: переменные должны быть заключены в кавычки, иначе неожиданный ввод (например,
hell
no!!!
или yes, i am.
) вызовет синтаксическую ошибку
- Строка 18, 25 и 32: регистр по умолчанию отсутствует, поэтому, если ответ не «Да» и «Нет», сценарий переходит к следующей строке.
Я бы также предложил изменить эти операторы if на if-else и использовать сравнение строк без учета регистра с if /I
. Попробуйте эти модификации:
@echo off
:joshua
echo Hello. My name is Joshua.
echo What is yours?
set /p name=
cls
echo Hello, %name%.
echo How are you?
set /p feeling=
cls
echo Is this good?
echo I'm sorry. I am still learning human feelings.
set /p humanfeelings=Yes/No
if /I "%humanfeelings%"=="yes" (
goto Good
) else (
goto Bad
)
cls
:Good
echo Well that is pleasant.
goto AskPlay
:Bad
echo That is not good.
:AskPlay
echo Would you like to play a game, %name%?
set /p answera=Yes/No
if /I "%answera%"=="yes" (
goto startmenu
) else (
goto later
)
cls
:startmenu
start menu.bat
cls
:later
echo That is fine, %name%. Maybe later!
pause
exit