bat进阶命令

1.start 命令

调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。如可执行文件exe,bat等

例子:

@echo off
chcp 65001
title=调用外部程序
set app=cls.bat
echo %app%
pause
start %app%

运行结果:

 

 2.读取dos输入,这里需要用到set标识符,还有参数/p

例子:

@echo off
chcp 65001
title="读取doc的输入测试"
set /p inp="请输入:"
echo %inp%
pause

运行结果:

 3.bat的函数声明

bat的函数声明,需要用到 特殊字符 :(英文的冒号)

例子:

@echo off
chcp 65001
title 函数声明
:fun_main
      echo 测试函数
:fun_test 
      echo 测试函数+1
pause

运行结果:

 bat是串行执行命令行,所以如果没有命令控制,bat会将所有的命令行和函数从上到下全部执行

4.goto命令

语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
指定跳转到标签行,找到标签行后,程序将处理从下一行开始的命令。
label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。
goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。

goto.bat 例子:

@echo off
title test goto
:begin
:fun_main
    echo fun_main
    pause   
    goto begin

运行结果:

 5.goto :eof  命令

goto :eof 可用于停止往下继续执行命令行

例子:

@echo off
title This is Test
:fun_mian
     echo This is main Function
     pause
     goto:eof
     echo This is mian Function2
:fun_part
     echo This is part Function
pause

运行结果:

 goto:eof后面的代码将不会被执行

 6.call 命令

call标识符也可以用于调用函数,也可以调用别的bat脚本

例子:

@echo off
title This is Test
:fun_main 
    echo This is main fun_main
    call :fun_part
    PAUSE
    goto:eof
:fun_part
    echo This is fun_part
    pause
    call goto.bat

运行结果:

 7.if 命令 用于条件判断

7.1  if

语法: if [not] "参数" == "字符串" 待执行的命令
     参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)

例子:

@echo off
chcp 65001
title This is if
:begin
set /p inp=请输入一个数A-C:
echo %inp%
if A == %inp% echo 输入的是A 
if %inp% == B echo 输入的是B 
if %inp% == C echo 输入的是C 
goto:begin
pause

运行结果:

 EQU - 等于,NEQ - 不等于,LSS - 小于,LEQ - 小于或等于,GTR - 大于,GEQ - 大于或等于

7.2  if exist

语法: if [not] exist [路径\]文件名 待执行的命令
     如果有指定的文件,则条件成立,运行命令,否则运行下一句。

例子:

@echo off
title This is Test
if exist goto.bat type goto.bat
pause

运行结果:

 7.3  if errorlevel number

语法: if [not] errorlevel <数字> 待执行的命令
     如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列)
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),称为错误码errorlevel或称返回码。
常见的返回码为0、1。通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令。等于0时代表前面命令执行没有报错。
例子:
@echo off
chcp 65001
title=This is Test
set /p inp=请输入:
echo %inp%
:main_function
    echo "This is main_function"
    if errorlevel==0 call :ff_function
pause
:ff_function
    echo "命令执行没问题"
    
:test_function
    echo "This is Test"
    pause
    goto:eof
echo "ending..." rem goto:eof 已结束,不会执行后面的
pause

运行结果:

 

 7.4 else

语法: if 条件 (成立时执行的命令) else (不成立时执行的命令)
     如果是多个条件,建议适当使用括号把各条件包起来,以免出错。

例子:

@echo off
chcp 65001
title=可爱的窗口
:begin
set  /p inp="input number:"
echo %inp%
if %inp% GEQ 20 (echo "输入的数大于等于20") else if %inp% GEQ 10 (echo "输入的数大于等于10") else if %inp% GEQ 1 (echo 输入的数大于等于1)^
 else (echo 输入的数小于1)
call :begin
pause
注:如果 else 的语句需要换行,if 执行的行尾需用“^”连接,并且 if 执行的动作需用(括起来),否则报错

运行结果:

 7.5 比较运算符

比较运算符:
     EQU - 等于   (一般使用“==”)
     NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
     LSS - 小于
     LEQ - 小于或等于
     GTR - 大于
     GEQ - 大于或等于
posted @ 2023-02-03 15:56  家乐福的搬砖日常  阅读(498)  评论(0编辑  收藏  举报