0

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

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



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

:end
echo finish
4

1 回答 1

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 then bar else baz ”,请使用以下命令:

    if foo (
      bar
    ) else (
      baz
    )
    

    而且您无法将事物与批处理文件><批处理文件进行比较。您必须使用GTRor LSS

    if %1 GTR 1 goto b else goto end
    
于 2012-11-08T07:20:24.583 回答