#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