2013-12-16 3 views
0

코드 실행에 도움이 필요하면 실행하면 오류 메시지가 표시되고 종료됩니다. 오류는 "예기치 않은 SetPassword1"입니다. 코드를 볼 때 SetPassword1이 무엇인지 이해하게 될 것입니다.예기치 않은 레이블, 이해가 안되는 이유

:SetPassword 
cls 
echo This is where you can set your password or change it. 
if EXIST pass.txt (
for /f "Delibs=" %%a in (pass.txt) do (
set OldPass=%%a 
set /p OldPassCheck=What was your old password: 
if %OldPassCheck%==%OldPass% goto SetPassword1 
echo That's not your old password. 
pause 
goto MainLogin 
) 
) 
echo. 
pause 
goto SetPassword1 

내 코드가 이해하기에 너무 어리 석다면, 기본적으로 내가하고 싶은 것입니다. 이미 새 비밀번호가 있으면 새 비밀번호를 설정하거나 이미 비밀번호가없는 경우 새 비밀번호를 설정하십시오. 암호를 포함하고있는 pass.txt가 존재하는지 확인해보고 암호가있는 경우 암호를 확인합니다. 그런 다음 OldPass로 설정됩니다. 그런 다음 사용자에게 이전 암호가 무엇인지 묻고, 암호가 맞으면 SetPassword1로 이동합니다 (새 암호를 설정할 위치로 이동). 그렇지 않은 경우 기본 메뉴로 돌아갑니다. 물론 pass.txt가 존재하지 않으면 If에서 명령을 실행하지 않고 SetPassword1로 직접 이동합니다.

너무 혼란스럽지 않았 으면 좋겠다. 어떤 도움이라도 대단히 감사하겠습니다! :)

추신. 나는 간단한 텍스트 문서에 암호를 저장하는 것이 안전하지 않다는 것을 알고 있지만 이것은 단지 테스트 응용 프로그램 일뿐 실제로 아무것도 보호하지는 않습니다.

PS2. SetPassword1 레이블이 있습니다. 여기에 포함되지 않았습니다. 죄송합니다! : P

+0

코드에 'SetPassword1'라는 레이블이 표시되지 않습니다. –

+0

그것은, 나는 그것을 포함하지 않았다. Oopsie. 질문을 수정했습니다. – Firestorm

+0

당신은': SetPassword'를 가지고 있지만'goto SetPassword1', ** with ** the ''을하고 있습니다. –

답변

1

gotoSetpassword1 레이블을 찾지 못합니다. gotoSetPassword으로 변경하거나 첫 번째 레이블을 식별자 :SetPassword1과 일치하도록 변경하거나 나중에 코드에 적절한 레이블을 만듭니다.

편집이 FOR 코드 내부 oldpass 변수 appropiately 업데이트가 지연된 확장 수 있도록해야합니다

.

setlocal enabledelayedexpansion 
    .... 

    if !OldPassCheck!==!OldPass! goto SetPassword1 
+1

레이블 setpassword1은 존재하지만, 여기에 포함시키지 않았습니다. 죄송합니다. 질문을 수정했습니다. – Firestorm

관련 문제