batch-file - 在子例程中退出批处理文件
问题描述
我有一个带有不同子例程的脚本:
REM ---------------MAIN------------------------START----------------------------
call :SUB_GetStartTime
call :SUB_SettingVariables
call :SUB_CheckingParameters %*
call :SUB_Copy
call :SUB_GetEndTime
call :SUB_WriteLog
call :SUB_EndScreen
REM ---------------MAIN------------------------END------------------------------
在 SUB_CheckingParameters 我有这个 if 查询:
if "%~1"=="/help" (
GOTO SUB_HELP
)
如果我传递参数 /help 它会转到我的帮助窗口:
cls
ECHO ===================HELP==============
ECHO help text help text help text
ECHO =====================================
timeout /t 120
exit /b
在exit /b
我希望脚本结束但它只是进入我的下一个子例程(SUB_Copy)之后。脚本不应该因为我使用GOTO SUB_Help
而不是而结束call
吗?
有人可以帮助我并告诉我我做错了什么吗?
解决方案
我通常通过传回错误级别来处理这个问题:
@Echo off
REM ---------------MAIN------------------------START----------------------------
call :SUB_GetStartTime
call :SUB_SettingVariables
call :SUB_CheckingParameters %* || Exit /b 1
call :SUB_Copy
call :SUB_GetEndTime
call :SUB_WriteLog
call :SUB_EndScreen
REM ---------------MAIN------------------------END------------------------------
Echo end of main
Pause
Goto :Eof
:SUB_CheckingParameters
if /I "%~1"=="/help" GOTO SUB_HELP
:SUB_GetStartTime
:SUB_SettingVariables
:SUB_Copy
:SUB_GetEndTime
:SUB_WriteLog
:SUB_EndScreen
Echo:We are in %~0 Args %*
Goto :Eof
:SUB_HELP
rem cls
ECHO ===================HELP==============
ECHO help text help text help text
ECHO =====================================
timeout /t 120
exit /b 1
推荐阅读
- rx-java - PublishProcessor.offer() 如何知道下游没有消费之前的发射?
- xml - 优雅的数字按钮未显示在 Android Studio XML 预览中
- python - responseMessages 未在 Django-Swagger 集成中显示
- javascript - 复制已渲染的 Vue.JS 组件
- tensorflow - 在 TensorFlow 和 Pytorch 中联合训练模型
- c++ - Swiftshader ( Angle Project ) vsync 不工作,如何解决?
- java - 如何在spring boot oauth2中允许来自特定主机的特定端点
- google-drive-api - Google Drive API - 存储在 GSuite 共享驱动器中的文件(仅)出现 404 错误
- javascript - 没有发生从 JavaScript 到 python 视图的 AJAX 调用(Django)
- c++ - 与不同变量类型相比的变量的 Clang AST 匹配器