내 스크립트가 잘못된 메시지를 인쇄하는 이유는 무엇입니까?

내 스크립트가 잘못된 메시지를 인쇄하는 이유는 무엇입니까?

저는 Y= 예/작업 1 및 N= 아니요/작업 취소라는 두 가지 선택이 가능한 스크립트를 사용하고 있습니다. yes를 선택할 때마다 취소 메시지가 먼저 출력되고,그 다음에작업 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

set /p varName=에 저장할 값을 입력하라는 메시지가 표시됩니다 varName. 귀하의 진술은 완전히 다른 것이 아니라 if확인해야 합니다 .varName

현재 설정 :choice및 확인 중 입니다 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%"

관련 정보