【原创】【学习笔记11】带标号: 的几种用法,if goto 和 call :sub

本文深入探讨了批处理脚本中的标号(tag)、goto语法、if条件语句及call命令的使用技巧,包括如何有效利用标号进行流程控制,goto与if结合实现条件跳转,以及call命令在调用子程序时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1 标号 tag :

  • bat的标号,一般是指 :
  • 标号就是标签  tag
  • 有效标号  :字母/数字,可以被goto识别
  • 无效标号    : 非字母/非数字
  • : 这一行命令是不会被执行的
  • 而且,这个只代表这一行,不代表一个block

 

@echo off
set a=1
set b=2
goto judge
:main
set a=3
set b=4
echo a=%a%
echo b=%b%
pause
exit


:judge
echo test goto without if
echo a=%a%
echo b=%b%
echo thats ok
goto main

标号:和标志之间说是不可加空格,我实测是可以的

goto a
:a
echo a
goto b
:   b
echo b

 

2 goto 语法,可以配合if 使用的,也可以独立使用

2.1 配合if 使用

  • 语法格式:if var==a goto A

  • 配合 :A

  • 配合exit

 

2.2  goto 单独使用

  • bat 是面向过程的语言
  • goto 作为面向过程的特征,从一个语句指向另外一个语句行(line),而不是一个语句块(block)
  • 而class 就是面对对象语言的特征,class 或 def 函数,定义了一个语句块 block
  • bat语言,是一行一行的执行,goto也是指向行的跳转
  • goto可以单独使用
  • : 这一行命令是不会被执行的
  • 而且,这个只代表这一行,不代表一个block
@echo off
set a=1
set b=2
goto judge
:main
set a=3
set b=4
echo a=%a%
echo b=%b%
pause
exit


:judge
echo test goto without if
echo a=%a%
echo b=%b%
echo thats ok
goto main

执行结果

 

 

3 if var ==a  goto A 用法

  • 语法格式:if var==a goto A

  • if "%var%"=="a" goto a

    if "%var%"=="b" goto b

  • 配合:A

  • 配合pause 和 exit,pause 必须在exit前面才生效

@echo off
set a=2
if %a%==1 goto a1
if %a%==2 goto a2

:a1
echo a=1
pause
exit

:a2
echo a=2
pause
exit

 

 

4 if errorlevel 1 goto A用法

  • 语法格式 if errorlevel 2 goto a
  • 但是默认,if errorlevel 判断语句,用的是>=    geq 判断的
  • 方法1:这个是默认解决方法
  • 所以errorlevel的值需要从大到小排列(从宽到严判断)
  • 方法2:判断 %errorlevel% 变量的值,这个是基于== equ的判断
  • if %errorlevel%==0  goto a 

 

方法1:

实际用的是  >=

if errorlevel 2 goto a

if errorlevel 1 goto b

if errorlevel 0 goto b

 

方法2:

if %errorlevel%==0  goto a

if %errorlevel%==2  goto b

if %errorlevel%==1  goto c

 

第3个方法没看懂

3、使用逻辑连接符代替 if errorlevel,改成:
DEL /F /A /Q /S %1 && echo 删除成功&&goto 13 || echo 删除失败&&goto 14

 

 

5 call 命令

call [Drive:][Path] FileName [BatchParameters] [:label [arguments]
参数
[Drive:}[Path] FileName

  • call和start最大的不同是2点:1 不重新起新窗口  2 需要等待call 调用的command执行完才继续往下
  • call可以执行 command  文件/脚本 子程序(命令段)
  • 具体语法如下
  • 调用子程序,需要用  call :sub 关键字
  • 配合    :sub
  • 配合    goto :eof

call  command

call 1.bat

call  :sub

:sub

goto:eof   *这个行内注释作为结尾*

 

6 call start 和直接调用其他 命令段,文件脚本的区别

  • call,当前窗口执行,并且执行完了会返回
  • start,新打开窗口
  • 直接调用其他命令段,文件脚本,并且不会返回当前程序
  • 可以分别吧    1.bat / call 1.bat / start bat  注释可试验
  •  

2.bat

@echo off
set a=1
set b=2
echo a=%a%
echo b=%b%

rem 1.bat
call 1.bat
rem start 1.bat

set a=3
set b=4
echo a=%a%
echo b=%b%

 

1.bat

@echo off
set a=999
if %a%==888 goto a1
if %a%==999 goto a2

:a1
echo a=888
pause


:a2
echo a=999
pause

直接调用

call

start

 

 

7 还有个其他的?: 截取字符串的操作

 

 echo 截取前5个字符:

  echo %ifo:~0,5%

 

 

8 start

start 在新窗口调用command 

 

 

7 exit 和 gotp:eof 的区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值