退出批处理文件的最佳做法是?

时间:2015-07-22 21:32:08

标签: windows batch-file scripting

对于批处理文件,我想检查不同的条件并提供帮助信息

显示消息后退出批处理文件的最佳做法是哪一个?

if "%1"=="/?"(
  echo "help message"
  exit /b 0
)
[more code]

if "%1"=="/?"(
  echo "help message"
  goto :EOF
)
[more code]
:EOF

第一个似乎对我未经训练的眼睛更好,但很多在线示例使用GOTO标记方法

SO社区对此有何看法?

2 个答案:

答案 0 :(得分:3)

我个人使用exit

  
      
  • 普通exit命令只是终止当前脚本和父目录(例如,如果您从命令行运行脚本,或从另一个批处理文件中调用它)

  •   
  • exit /b用于终止当前脚本,但保留父窗口/脚本/调用标签。

  •   
  • 使用退出,您还可以添加退出的错误级别。例如,exit /b 1会产生%errorlevel%为1.示例:

  •   
@echo off
call :getError     rem Calling the :getError label
echo Errorlevel: %errorlevel%     rem Echoing the errorlevel returned by :getError
 pause

:getError
exit /b 1    rem exiting the call and setting the %errorlevel% to 1 

会打印:

Errorlevel: 1
press any key to continue...

在创建可能出现故障的批处理脚本时,使用此方法设置错误级别非常有用。您可以为不同的错误创建单独的:labels,并且每个错误都返回一个唯一的错误级别。

  
      
  • goto :eof结束当前脚本(调用)但不结束父文件(类似于exit /b
  •   
  • 与退出不同,您可以在其中设置退出错误级别,goto :eof会自动将错误级别设置为当前设置的级别,从而使识别问题变得更加困难。
  •   

这两个也可以在同一个批处理文件中一起使用:

@echo off
call :getError
echo %errorlevel%
pause
goto :eof

:getError 
exit /b 2

退出批处理脚本的另一种方法是使用cmd /k在独立批处理文件中使用时,cmd /k将返回常规命令提示符。

总而言之,我建议您使用exit,因为您可以设置错误级别,但是,这完全取决于您。

答案 1 :(得分:1)

GOTO:EOF与EXIT / B之间没有任何功能或性能差异,除了EXIT / B允许您指定返回的ERRORLEVEL,而GOTO:EOF不允许。

显然,如果你想在返回时指定ERRORLEVEL,那么首选EXIT / B.

如果您不关心返回代码,或者您知道ERRORLEVEL已经设置为正确的值,那么它没有任何区别 - 它完全取决于首选项/编码风格。