-
goto
-
说明
goto
指令指定程序下一步执行的位置;- 和
C
语言的goto
差不多; 因为bat
没有函数的概念, 可以在整个bat
文件中任意跳转; - 而
label
的定义和C
语言略有差异;
-
案例
int main() { int a = 0; label: if (a < 10) { ++a; goto label; } return 0; }
set /a a=0 :label if %a% lss 10 ( set /a a+=1 goto :label ) echo %a%
- 上面两个都差不多, 只是定义和调用的略有差异;
-
参考
-
补充
goto :EOF
和return
类似;即推出当前程序;label
定义是一行都是, 可以包含空格, 但是不能包括;=
之类的;label
的定义尽量避免二义性;可以前面加空格,:
只能一个, 多了就变成注释了.goto
结合if
可以实现bat
没有的while
循环;goto
不仅仅往回跳,也可以往下跳;
-
-
call
-
简介
-
格式
call [drive:][path]<filename> [<batchparameters>] [:<label> [<arguments>]]
[drive:][path]<filename>
文件名, 指调用某个bat
文件.batchparameters
表示输入参数:<label>
标记点, 表示开启一个函数,从这个点开始执行;当然也会继承当前的环境变量;[drive:][path]<filename>
的优先级大于[:<label> [<arguments>]]
.
-
注意
-
案例
call :function_label :function_label setlocal echo good endlocal && exit /b 0
- 这个的执行结果是;
good good [Finished in 336ms]
- 原因是从上往下执行,
call
之后, 继续往下执行;
call :function_label exit /b 0 :function_label setlocal echo good endlocal && exit /b 0
- 所以需要这种; 执行完推出当前环境;
-
bat goto 还是 call
最新推荐文章于 2024-07-01 14:40:14 发布