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