2013-08-04 7 views
0

배치 스크립트를 사용하여 일부 계정의 잠금을 해제하고 결과에 따라 레이블로 이동했습니다.배치 스크립트가 레이블을 수정하지 않음

현재 스크립트가 작동합니다. 결국 올바른 레이블로 이동하지 않습니다. 라벨이 올바른 순서로 있어야한다는 것을 이해하지만이 주문의 내용과 오류 레벨을 올바르게 확인하는 방법을 이해하지 못합니다.

@echo off 

cls 
echo ------------------- 
echo Unlocking Account0... 
echo ------------------- 
pause 
net user Account0 /active:yes 
goto %ERRORLEVEL% 

:0 
cls 
echo ------------------- 
echo Account0 unlocked successfully! 
echo Press any key to reboot now. 
echo ------------------- 
pause 
goto reboot 


:2 
cls 
echo ------------------- 
echo Account0 not found. Unlocking Account1... 
echo ------------------- 
pause 
net user Account1 /active:yes 
if errorlevel 2 goto 3 
if errorlevel 0 goto 0 


:3 
cls 
echo ------------------- 
echo Account0 and Account1 not found! 
echo Please make sure that one of these accounts exist. 
echo You can use the command "net user <accounthere> /active:yes" to manually unlock an account. 
echo ------------------- 
pause 
goto END 

:END 
cls 
echo NONE FOUND, EXIT SCRIPT. 

:reboot 
cls 
echo ACCOUNT FOUND, REBOOT HERE 

그게 전부입니다. 멋진 일은 없어. 올바른 레이블로 이동하지 않습니다.

+0

모두 수정되었습니다. 나는 eof 레이블을 잊었다. 재부팅 레이블 아래에 goto : eof를 추가하면 정상적으로 작동하며 END 레이블이 필요 없습니다. – KazukiMutou

답변

0

IF /?를 참조하십시오.

if errorlevel 2 goto 3 
오류 수준은 2 보다 크거나 같으면

윌 고토 3 당신은 할 수 있습니다 :

if %errorlevel% equ 2 goto 3 
if %errorlevel% equ 0 goto 0 
+0

문제는 두 계정이 모두 없으면 goto END 대신 goto 재부팅이 수행된다는 것입니다. 스위칭 : END 및 : 주변에서 재부팅해도 아무런 차이가 없습니다. – KazukiMutou

+0

echo off 및 cls를 제거하여 현재 진행중인 작업을 확인합니다. 기본적으로 goto : END를 수행하지만 다시 부팅합니다. 방금 스크립트를 중단 시키려면 reboot 또는 end labels 중 하나를 선택하십시오. – KazukiMutou

0

대신을

goto END 

이 (가)

goto :EOF 
내장 사용하여

es는 기본적으로 파일의 끝에 붙습니다 (콜론에 유의하십시오).

관련 문제