Por que meu script está imprimindo as mensagens do wrog?

1

Estou trabalhando com um script que tem duas opções possíveis: Y = sim / operação 1 e N = não / cancelar operação. Sempre que eu escolho sim, a mensagem para cancelar é impressa primeiro, então a operação 1 é executada. Eu quero que as mensagens apropriadas apareçam apenas para as escolhas 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
    
por Mr. Mendelli 16.04.2018 / 11:30

1 resposta

1

set /p varName= solicitará que você insira um valor a ser salvo em varName . Suas declarações if precisam verificar varName em vez de algo completamente diferente.

Atualmente, você está definindo :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

Note que no meu exemplo eu também removi o ":" antes da "escolha" no seu comando set /p , já que parece desnecessário e significaria que suas declarações if precisariam ser if /I "%:choice%"

    
por 16.04.2018 / 11:41

Tags