![Por que meu script está imprimindo mensagens erradas?](https://rvso.com/image/1558686/Por%20que%20meu%20script%20est%C3%A1%20imprimindo%20mensagens%20erradas%3F.png)
Estou trabalhando com um script que possui duas opções possíveis: Y= sim/operação 1 e N= não/cancelar operação. Sempre que escolho sim, a mensagem de cancelamento é impressa primeiro,entãoa operação 1 é executada. Quero que as mensagens adequadas apareçam apenas para as opções correspondentes. Aqui está o meu código:
@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
Responder1
set /p varName=
solicitará que você insira um valor a ser salvo em varName
. Suas if
declarações precisam ser verificadas, varName
e não algo completamente diferente.
Atualmente você está configurando :choice
e verificando c
. (%c%)
Tente mudar
set /p :choice=
if /I "%c%" EQU "Y" goto :YES
if /I "%c%" EQU "N" goto :NO
Para
set /p choice=
if /I "%choice%" EQU "Y" goto :YES
if /I "%choice%" EQU "N" goto :NO
Observe que no meu exemplo também removi o ":" antes da "escolha" no seu set /p
comando, pois parece desnecessário e significaria que suas if
declarações precisariam serif /I "%:choice%"