调用函数批处理文件

时间:2012-11-08 07:09:44

标签: batch-file

我在我的批处理文件中调用一个函数。在函数完成流程连续后,然后当我转到批处理文件末尾的标签END时,它返回到我调用函数aa的空间并打印zi 。

 :b  
 call :aa 1
 echo zi
 call :rr
 **goto end**



:aa
if...(
goto b)else(
goto end

:end
echo finish

1 个答案:

答案 0 :(得分:2)

这个问题没有多大意义。首先,我甚至很难理解你的意思,但看看代码有一些显而易见的事情:

  1. 标签写为:label,而不是label:。因此b:只更改了驱动器,aa:end:只是无效的语法。

  2. 调用子程序将导致所有“批处理文件结束”条件表示“从子程序返回”。这包括文件结尾goto :eofexit /b。通常子程序以goto :eof结束,你还需要使用类似上面所有子程序的东西,以避免在常规程序流程之后遇到它们。

  3. if %1>2可能仅仅意味着“语法错误,但将标准输出流重定向到标准错误流”。至少在这里只是说1> was unexpected at this time.。这是预期的。如果您想说“If foo 然后 bar else baz ”,请使用以下内容:

    if foo (
      bar
    ) else (
      baz
    )
    

    您无法在批处理文件中与><进行比较。您必须使用GTRLSS

    if %1 GTR 1 goto b else goto end