我理解代码中的标签链接,但有什么区别?
@echo off
:top
echo I love StackOverflow.com
goto :top
@echo off
:top
echo I love StackOverflow.com
call :top
提前谢谢!
答案 0 :(得分:12)
你给出的例子并不能真正显示两者之间的区别。
“goto” - 转到标签。
“call” - 转到标签,然后在代码完成后返回给调用者。
在您的示例中,由于您的代码永远不会完成,因此它永远不会返回给调用者。
您可能会看到的唯一区别是,“调用”版本最终会在“返回”的列表变得如此之大,直到“填满”内存时崩溃。
要了解如何正确使用呼叫命令:http://ss64.com/nt/call.html
答案 1 :(得分:3)
在您的示例中,非常少 - 除了call
版本最终会崩溃。
goto
将执行转移到指定的标签;从那时起继续执行。
call
或exit
时, end-of-physical-file
也会将执行转移到标签但是,执行会在call
之后直接转移回指令{1}}指示。
call
也允许传递参数。至于作为call
目标的子例程,其%1...
是call
提供的参数,而不是作为批处理过程的命令行参数提供的。
您可以call
外部批处理或可执行文件,并且在 调用例程的末尾,执行将继续执行call
之后的指令。 goto
只会执行目标,并完全忘记原始批次中的位置
答案 2 :(得分:0)
call
有一个回复:
for /l %%i in (1,2,10) do call :process %%i
pause
Exit /b
:process
echo subroutine - %1