সাবউটিনের ভিতর থেকে আমি কীভাবে ব্যাচ ফাইল থেকে বেরিয়ে যেতে পারি?
আমি যদি এক্সিট কমান্ডটি ব্যবহার করি তবে আমি কেবল সেই লাইনে ফিরে আসি যেখানে আমি সাবরুটিনকে ডেকেছিলাম এবং মৃত্যুদন্ড কার্যকর হয়।
এখানে একটি উদাহরণ:
@echo off
ECHO Quitting...
CALL :QUIT
ECHO Still here!
GOTO END
:QUIT
EXIT /B 1
:END
EXIT /B 0
আউটপুট:
Quitting...
Still here!
হালনাগাদ:
এটি যথাযথ উত্তর নয়, তবে আমি এর লাইনে কিছু করে শেষ করেছি:
@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
এর ডাবল পাইপ বিবৃতি:
CALL :SUBROUTINE_WITH_ERROR || GOTO HANDLE_FAIL
সংক্ষিপ্ত জন্য:
CALL :SUBROUTINE_WITH_ERROR
IF ERRORLEVEL 1 GOTO HANDLE_FAIL
আমি এখনও জানতে আগ্রহী যে কলারকে পরিস্থিতিটি পরিচালনা করার পরিবর্তে সাব্রুটিন থেকে সরাসরি প্রস্থান করার উপায় আছে কিনা তবে এটি কমপক্ষে কাজটি সম্পন্ন করে।
আপডেট # 2: উপরের পদ্ধতিতে ডাকা অন্য সাব্রোটিনের মধ্যে থেকে সাব্রুটিন কল করার সময় আমি সাব্রোটাইনগুলির মধ্যে থেকে এইভাবে কল করি:
CALL :SUBROUTINE_WITH_ERROR || EXIT /B 1
এইভাবে, ত্রুটিটি "মূল" পর্যন্ত ফিরে প্রচার করে, তাই কথা বলতে। ব্যাচের প্রধান অংশটি ত্রুটি পরিচালনাকারী GOTO: ব্যর্থতা দিয়ে ত্রুটিটি পরিচালনা করতে পারে
GOTO :EOF