我在我的批处理文件中调用一个函数。在函数完成流程连续后,然后当我转到批处理文件末尾的标签END时,它返回到我调用函数aa的空间并打印zi 。
:b
call :aa 1
echo zi
call :rr
**goto end**
:aa
if...(
goto b)else(
goto end
:end
echo finish
答案 0 :(得分:2)
这个问题没有多大意义。首先,我甚至很难理解你的意思,但看看代码有一些显而易见的事情:
标签写为:label
,而不是label:
。因此b:
只更改了驱动器,aa:
和end:
只是无效的语法。
调用子程序将导致所有“批处理文件结束”条件表示“从子程序返回”。这包括文件结尾goto :eof
和exit /b
。通常子程序以goto :eof
结束,你还需要使用类似上面所有子程序的东西,以避免在常规程序流程之后遇到它们。
if %1>2
可能仅仅意味着“语法错误,但将标准输出流重定向到标准错误流”。至少在这里只是说1> was unexpected at this time.
。这是预期的。如果您想说“If foo 然后 bar else baz ”,请使用以下内容:
if foo (
bar
) else (
baz
)
您无法在批处理文件中与>
或<
进行比较。您必须使用GTR
或LSS
:
if %1 GTR 1 goto b else goto end