나는 다음과 같은 Windows 배치 코드를 가지고 그것을 실행하는 경우 :(윈도우 배치) 고토 블록은 매우 이상하게 행동하면 내
echo foo
if 1 == 1 (
echo bar
goto asdf
:asdf
echo baz
) else (
echo quux
)
을 내가 기대 출력은 다음과 같습니다
foo
bar
baz
하지만 그 대신 내가 얻은 :
foo
bar
baz
quux
goto asdf
줄을 주석으로 처리하면 예상 한 결과를 얻을 수 있습니다. echo quux
라인을 절대로 발췌해서는 안되며, 왜 고토의 존재가 그 원인이됩니까?
UPDATE :
goto BEGIN
:doit
echo bar
goto asdf
:asdf
echo baz
goto :EOF
:BEGIN
echo foo
if 1 == 1 (
call :doit
) else (
echo quux
)
그러나,이 내 원래의 질문에 대답하지 않습니다 : 그것은 가치가 무엇인지에 대한, 여기에 제대로 내가 원래 의도 않는 문제를 해결합니다.
+1 좋은 설명, Dave. 더 짧은 것 :'GOTO'가 실행될 때 * 활성화 *'FOR/IF' 명령이 취소되고 배치 파일은 라벨에서 계속됩니다. – Aacini