Программа меню пакетного файла неожиданно закрывается

#windows #batch-file #cmd

#Windows #пакетный файл #cmd

Вопрос:

Я начал кодировать 2 дня назад и хотел создать программу на основе меню, в которой вы вводите ввод в подсказки.

Каким-то образом после строки 14 программа закрывается, и я понятия не имею, почему.

Было бы здорово, если бы кто-нибудь мог объяснить, почему мой код не работает, вместо того, чтобы публиковать совершенно новый код!

 echo off
:c
color fa
echo ====================================
echo =      WELCOME!I AM LIZA!          =
echo =      HOW ARE YOU TODAY?          =
echo =    1) Im great :D                =
echo =    2) Im okay :I                 =
echo =    3) Im sad :(                  =
echo =                                  =
echo ====================================
echo.
echo.
set /p ans="Enter your number to continue:"

if %ans%==1(
goto a1
)
if %ans%==2(
goto a2
)
if %ans%==3(
goto a3
)

:a1
cls
echo Liza: Nice to hear so! :D What did you do today?
echo.
set /p ans=">> "
cls
echo Liza: Sounds awesome! I was swimming in millions of bits today, it was so fun! xD
pause

:a2
cls
echo Liza: You dont seem like... What happened that makes you feel unconfy? ;(
echo.
set /p ans=">> "
cls
echo Liza: Im sorry for that, I hope talking to me makes it better tho ;)
pause

:a3
cls
echo Liza: Why so?! Tell me what or who makes you sad, im here for you to cheer you up!
echo.
set /p ans=">> "
cls
echo Liza: Oh my god, thats terrible im so sorry for you! I hope you feel better after talking to me, because im a software that is just nice :D
pause
```
 

Ответ №1:

Ваша конкретная проблема заключается в том, что вы не смогли включить пробел непосредственно перед открывающими круглыми скобками.

неверно:

 if %ans%==1(
 

правильно:

 if %ans%==1 (
 

более правильно:

 if "%ans%" == "1" (
 

Однако вам следует заменить весь :c помеченный раздел, чтобы использовать более подходящую команду, например:

 Color FA
Echo ====================================
Echo =      WELCOME!I AM LIZA!          =
Echo =      HOW ARE YOU TODAY?          =
Echo =    1) Im great :D                =
Echo =    2) Im okay :I                 =
Echo =    3) Im sad :(                  =
Echo =                                  =
Echo ====================================
Echo(
Echo(
Choice /C 123 /N /M "Enter your number to continue:"
GoTo a%ErrorLevel%
 

Комментарии:

1. Я бы также посоветовал, поскольку вы, похоже, намерены восклицать все без необходимости, чтобы вы начинали свой сценарий с @Echo Off amp; SetLocal EnableExtensions DisableDelayedExpansion , вместо echo off . В настоящее время при включенном отложенном расширении, случайно или иным образом, ваши восклицательные знаки, ! могут быть удалены или, что еще хуже, такие вещи, как: Echo = WELCOME!I AM LIZA! = , будут расширяться до = WELCOME = . Самый безопасный метод, особенно если вам нужно использовать отложенное расширение в любом месте вашего скрипта, это, конечно, вообще не использовать восклицательные знаки.

2. Большое вам спасибо, ребята! Это очень помогло, я новичок, и для меня это все ново, спасибо, что помогли мне! : D