1

Я работаю со сценарием, который имеет два возможных варианта: Y = да / операция 1 и N = нет / отмена операции. Всякий раз, когда я выбираю «да», сначала выводится сообщение об отмене, затем выполняется операция 1. Я хочу, чтобы правильные сообщения отображались только для соответствующих вариантов. Вот мой код:

@ECHO OFF

:choice
echo.
echo Do you want to proceed with the process?
echo Enter Y to run or N to cancel.
set /p :choice=
if /I "%c%" EQU "Y" goto :YES
if /I "%c%" EQU "N" goto :NO

:NO
echo The operation has been cancelled...
PAUSE
goto :END

:YES
:: Additional code for operation 1 goes here.

echo The operation has been completed successfully!
PAUSE

:END

1 ответ1

1

set /p varName= предложит вам ввести значение, которое будет сохранено в varName . Ваши операторы if должны проверять varName а не что-то совершенно другое.

В данный момент вы настраиваете :choice и проверка c . (% C%)

Попробуйте изменить

set /p :choice= 
if /I "%c%" EQU "Y" goto :YES 
if /I "%c%" EQU "N" goto :NO

к

set /p choice= 
if /I "%choice%" EQU "Y" goto :YES 
if /I "%choice%" EQU "N" goto :NO

Обратите внимание, что в моем примере я также удалил «:» перед "выбором" в вашей команде set /p как это кажется ненужным и означало бы, что ваши операторы if должны быть if /I "%:choice%"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .