bat批处理 call 和 goto 调用
前言全局说明
bat批处理 call 和 goto 调用
goto 微软官方说明: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/goto
一、call
1.1 call 说明
call :label 可以看成是函数调用, 创建新的执行环境, 新的环境的变量之类的都会继承当前环境;执行结束后恢复之前的环境
1.2 格式
call [drive:][path]<filename> [<batchparameters>] [:<label> [<arguments>]]
- [drive:][path]<filename>文件名, 指调用某个bat文件;
- batchparameters表示输入参数;
- :<label>标记点, 表示开启一个函数,从这个点开始执行;当然也会继承当前的环境变量;
- [drive:][path]<filename> 的优先级大于[:<label> [<arguments>]]
二、goto
2.1 说明
goto :label 指令指定程序下一步执行的位置;
goto :EOF和return类似;即推出当前程序;
label定义是一行都是, 可以包含空格, 但是不能包括;=之类的;
label的定义尽量避免二义性;可以前面加空格, :只能一个, 多了就变成注释了.
goto结合if可以实现bat没有的while循环;
goto不仅仅往回跳,也可以往下跳;
s2.2 语法
GOTO label
label 指定批处理程序中用作标签的文字字符串。
三、bat批处理 call 调用 并 传递参数
@echo off
SET val=""
SET val=%val:~1,-1%
call :EmptyTest %val%
goto :eof
:EmptyTest
if "%1"=="" ( echo Empyt!!! )
pause
%val:~1,-1%: 截取变量val的第二个至倒数第二个(0开始),例子:12345 ,结果 234
call: EmptyTest %val% 是调用EmptyTest标签时,将 %val% 变量参数值传入
bat的:标签,可以理解未 linux shell 的函数
效果:
四、
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.csdn.net/weixin_44733774/article/details/134774852 ( ### 二)
https://tieba.baidu.com/p/4323239807
https://blog.csdn.net/rubikchen/article/details/127035360 (### 1.1)
https://blog.csdn.net/zgl2008/article/details/5280918 (截取)
https://www.jb51.net/article/271017.htm (goto跳转)