在批处理脚本中使用CALL标记

时间:2011-07-18 18:59:52

标签: batch-file cmd call subroutine

当使用CALL命令在批处理脚本中调用标签时,你用GOTO:eof结束子程序,从那里发生了什么?它是否返回到子程序的CALL所在的位置?还是在调用脚本的位置后继续?

例如:

ECHO It's for my college fund.
CALL :OMGSUB
ECHO *runs away and cries like a little girl*

:OMGSUB
ECHO Your mom goes to college.
GOTO:eof

ECHO *picks up jewelry box*

GOTO之后:eof哪一行会在下一个回响?

2 个答案:

答案 0 :(得分:10)

为什么不运行它并亲眼看看?我将你的脚本保存到一个名为foo.bat的批处理文件中,然后我改变了你的妈妈去大学,在前面有一个echo

C:\temp>foo

C:\temp>ECHO It's for my college fund.
It's for my college fund.

C:\temp>CALL :OMGSUB

C:\temp>echo Your mom goes to college.
Your mom goes to college.

C:\temp>GOTO:eof

C:\temp>ECHO *runs away and cries like a little girl*
*runs away and cries like a little girl*

C:\temp>echo Your mom goes to college.
Your mom goes to college.

C:\temp>GOTO:eof

C:\temp>

因此很容易看到OMGSUB被调用后,

  1. 转到文件末尾。
  2. 然后它返回到CALL :OMGSUB之后的右边的行并回显“跑掉”行
  3. 然后它再次回应你的妈妈行
  4. 它将结束文件并终止
  5. echo 拾取jewewlry box 行永远不会到达。

答案 1 :(得分:0)

goto:eof结束批处理文件中的“OMGSUB脚本”。所以

*runs away and cries like a little girl*

接下来会回应。