Неожиданный выход после ввода пользователя - PullRequest
0 голосов
/ 22 февраля 2019

Здесь нужна небольшая помощь для моего кода.

Когда скрипт обнаруживает файл сохранения, он должен спросить, нужно ли его заново создать.В этот момент я нажимаю Y для Yes, но это exit s.

Вот код:

:existing
echo Welcome to Androids: Became Human!
echo ==================================
echo.
echo It appears that you already created
echo configuration file. Would you like
echo to re-create it?
echo.
echo Please enter (Y,N):
set /p choice=
if %choice% == "y" goto welcome
if %choice% == "n" exit
if %choice% == "Y" goto recreation
if %choice% == "N" exit

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Используйте кавычки с обеих сторон, вот пример:

ПЛОХО:

:existing
echo Welcome to Androids: Became Human!
echo ==================================
echo.
echo It appears that you already created
echo configuration file. Would you like
echo to re-create it?
echo.
echo Please enter (Y,N):
set /p choice=
if %choice% == "y" goto welcome
if %choice% == "n" exit
if %choice% == "Y" goto recreation
if %choice% == "N" exit

ХОРОШО:

:existing
echo Welcome to Androids: Became Human!
echo ==================================
echo.
echo It appears that you already created
echo configuration file. Would you like
echo to re-create it?
echo.
echo Please enter (Y,N):
set /p choice=
if "%choice%" == "y" goto welcome
if "%choice%" == "n" exit
if "%choice%" == "Y" goto recreation
if "%choice%" == "N" exit

Также здесь я сделал лучшую версию вашего кода:

:existing
echo Welcome to Androids: Became Human!
echo ==================================
echo.
choice /c ynY /cs /m "It appears that you already created the configuration file, would you like to save it"
cls
if "%errorlevel%" == "1" goto welcome
if "%errorlevel%" == "2" exit
if "%errorlevel%" == "3" goto recreation
0 голосов
/ 22 февраля 2019

Когда вы включаете кавычки только в одну сторону , тогда кавычки включаются в сравнение .Я не рекомендовал бы ни удалять кавычки с одной стороны, что небезопасно, или добавлять кавычки к обеим сторонам, как это (что также хорошо работает) [скобки включены]:

:existing
echo Welcome to Androids: Became Human!
echo ==================================
echo.
echo It appears that you already created
echo configuration file. Would you like
echo to re-create it?
echo.
echo Please enter (Y,N):
set /p choice=
if "%choice%" == "y" (goto welcome)
if "%choice%" == "n" (exit)
if "%choice%" == "Y" (goto recreation)
if "%choice%" == "N" (exit)

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

:existing
echo Welcome to Androids: Became Human!
echo ==================================
echo.
echo It appears that you already created
echo configuration file. Would you like
echo to re-create it?
echo.
choice /C:YyNn /CS /M "Please enter (Y,N):" /N
if errorlevel 3 (exit)
if errorlevel 2 (goto :welcome)
if errorlevel 1 (goto :recreation)

, что намного сортирует.

Для получения дополнительной информации о командахиспользовать, откройте новый cmd и введите:

  • echo /?
  • choice /?
  • if /?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...