【问题标题】:Batch File: Return to caller?批处理文件:返回给调用者?
【发布时间】:2011-10-07 09:45:32
【问题描述】:

批处理文件子例程的return 语句等效于什么?

【问题讨论】:

    标签: windows batch-file return-value return


    【解决方案1】:

    它是:

    goto :eof
    

    这对于习惯于普通编程语言的人来说是可以理解的。

    我找到了这个信息here

    【讨论】:

    • 嗯。我一直认为您必须在文件末尾手动定义 :eof 标签,但显然它是隐式定义的。每天学习新东西。
    • @Greg: ... wtf?哈哈,谢谢你的信息,+1。 :) 顺便说一句,您是否知道如何过早地跳出for 循环?
    • @Mehrdad:我不知道,但可能还涉及到goto
    • FOR /L 循环不能这样中断,所有迭代都在goto 之后展开(但不执行)
    • 小提示:要让它工作,你必须使用call :SubroutineLabelName 而不是goto SubroutineLabelName
    【解决方案2】:

    我认为是:

    exit /b [exitCode]
    

    不仅因为它更易于使用,还因为 exit /b(也只是 exit)可能会向调用程序返回一个 exitCode (ERRORLEVEL) 值。

    在我看来,goto :eof 是一个不应该使用的奇怪补丁......

    【讨论】:

    • +1,但exit /b 似乎是带有错误级别的goto :eof,如果您尝试使用exit /bsetlocal DisableExtensions 则可见
    • 是的,我测试了你所说的(有趣的事情!),但我的意思是:如果 EXIT /B 有效并且不会像 GOTO :EOF 那样混淆,为什么要使用 GOTO :EOF (甚至提到它)?如果该答案是 EXIT /B,则上述第一个答案及其前两个 cmets 中的解释甚至都不存在
    • 不知道我是怎么错过这个聚会的——我同意,出于可读性原因(加上附加功能), EXIT /B 比 GOTO :EOF 好得多。不幸的是,批处理世界一直坚持使用神秘的 GOTO :EOF,并且这种做法传播开来,因为新手看到了所有旧示例。
    • @dbenham:是的,类似于使用echo. 插入空行... :(
    【解决方案3】:
    Goto :Eof
    
    Exit
    

    Goto :Eof 通常在调用命令中使用 如:

    @echo off
    call :Hi
    pause&exit
    :hi
    echo Hello!
    goto :eof 
    

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 1970-01-01
      • 2013-03-11
      • 2012-07-13
      • 2012-07-17
      • 2012-11-17
      • 2014-03-17
      • 2017-07-22
      • 1970-01-01
      相关资源
      最近更新 更多