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 - 大于或等于