Bagaimana saya bisa keluar dari file batch dari dalam subrutin?
Jika saya menggunakan perintah EXIT, saya cukup kembali ke baris tempat saya memanggil subrutin, dan eksekusi berlanjut.
Ini sebuah contoh:
@echo off
ECHO Quitting...
CALL :QUIT
ECHO Still here!
GOTO END
:QUIT
EXIT /B 1
:END
EXIT /B 0
Keluaran:
Quitting...
Still here!
Memperbarui:
Ini bukan jawaban yang tepat, tetapi saya akhirnya melakukan sesuatu seperti:
@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
Pernyataan pipa ganda:
CALL :SUBROUTINE_WITH_ERROR || GOTO HANDLE_FAIL
adalah singkatan untuk:
CALL :SUBROUTINE_WITH_ERROR
IF ERRORLEVEL 1 GOTO HANDLE_FAIL
Saya masih ingin tahu apakah ada cara untuk keluar langsung dari subrutin daripada harus membuat Penelepon menangani situasi, tetapi ini setidaknya menyelesaikan pekerjaan.
Pembaruan # 2: Ketika memanggil subrutin dari dalam subrutin lain, dipanggil dengan cara di atas, saya menelepon dari dalam subrutin berikut:
CALL :SUBROUTINE_WITH_ERROR || EXIT /B 1
Dengan cara ini, kesalahan menyebar kembali ke "utama", sehingga untuk berbicara. Bagian utama dari batch kemudian dapat menangani kesalahan dengan penangan kesalahan GOTO: FAILURE
GOTO :EOF