批处理文件:返回给调用者?
Posted
技术标签:
【中文标题】批处理文件:返回给调用者?【英文标题】:Batch File: Return to caller? 【发布时间】:2011-10-07 09:45:32 【问题描述】:批处理文件子例程的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 /b
和setlocal 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
【讨论】:
以上是关于批处理文件:返回给调用者?的主要内容,如果未能解决你的问题,请参考以下文章