Bir alt programın içinden bir toplu iş dosyasından nasıl çıkabilirim?
EXIT komutunu kullanırsam, alt rutini çağırdığım satıra dönüp yürütme devam eder.
İşte bir örnek:
@echo off
ECHO Quitting...
CALL :QUIT
ECHO Still here!
GOTO END
:QUIT
EXIT /B 1
:END
EXIT /B 0
Çıktı:
Quitting...
Still here!
Güncelleme:
Bu doğru bir cevap değil, ama sonunda şu şeyleri yaptım:
@echo off
CALL :SUBROUTINE_WITH_ERROR || GOTO HANDLE_FAIL
ECHO You shouldn't see this!
GOTO END
:SUBROUTINE_WITH_ERROR
ECHO Simulating failure...
EXIT /B 1
:HANDLE_FAIL
ECHO FAILURE!
EXIT /B 1
:END
ECHO NORMAL EXIT!
EXIT /B 0
Çift borulu ifadesi:
CALL :SUBROUTINE_WITH_ERROR || GOTO HANDLE_FAIL
kısaltması:
CALL :SUBROUTINE_WITH_ERROR
IF ERRORLEVEL 1 GOTO HANDLE_FAIL
Hâlâ CALLER'in durumu ele alması yerine doğrudan bir altyordamdan çıkmanın bir yolu olup olmadığını bilmek isterim, ancak bu en azından işi hallediyor.
Güncelleme # 2: Yukarıdaki şekilde çağrılan başka bir altyordam içinden bir altyordam çağırırken, böylelikle altyordamlar içinden çağırıyorum:
CALL :SUBROUTINE_WITH_ERROR || EXIT /B 1
Bu şekilde, hata, "ana" ye kadar yayılır. Toplu işin ana kısmı hatayı hata işleyicisi GOTO: FAILURE ile işleyebilir
GOTO :EOF