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