简介
以下内容摘自百度百科:批处理是一种简化的脚本语言,也称作宏。它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND. COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的扩展名。
常用指令
指令 | 描述 | 示例 |
---|
echo | 回显 | echo 回显内容 | echo off | 关闭回显 | echo off | @echo off | 关闭回显(不同于直接 echo off 的是, @echo off 使得关闭本身这句命令也不回显) | @echo off | echo on | 打开回显 | echo on | call | 调用另一个批处理文件 | call B.bat 传参1 | set | 设置变量, 注意等号两边无空格 | set TEST_NUM=1 | %~dp0 | 当前文件存在路径 | set PWD=%~dp0 | pause | 暂停,加在批处理文件末使执行后不自动退出 | pause | if 条件(命令1) else (命令2) | 条件指令 | if %1 EQU 1(echo yes) else (echo no) | %1 %2 %3 | 调用该批处理时传入的第一、二、三个参数 | echo %1 | %变量% | 取变量的值 | echo %变量% | xcopy | COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝 | xcopy %path1% %path2% /y |
示例文件
A.bat
:: 显示字符串
echo ECHO_TEST
:: 关闭回显
echo off
echo ECHO_TEST
:: 关闭回显(不同于直接 echo off 的是, @echo off 使得关闭本身这句命令也不回显)
@echo off
echo ECHO_TEST
:: 打开回显
echo on
:: 调用另一个批处理文件
call B.bat A
:: 设置变量
set TEST_NUM=1
echo %TEST_NUM%
:: %~dp0 表示当前路径
set PWD=%~dp0
echo %PWD%
:: 条件语句
:: EQU - 等于
:: NEQ - 不等于
:: LSS - 小于
:: LEQ - 小于或等于
:: GTR - 大于
:: GEQ - 大于或等于
if %TEST_NUM% EQU 1(echo yes) else (echo no)
:: /? 查询用法
xcopy /?
:: 暂停,加在批处理文件末使执行后不自动退出
pause
B.bat
echo call B.bat %1
执行结果
运用场景
批处理本质是脚本语言,它的功能很强大,可以直接运行或者配合各软件达到自动化的效果。 以嵌入式中的 keil 为例。
- keil 通过设置允许在编译前自动取执行批处理,而批处理中可以调用各种操作,如:执行 python 脚本,调用 exe 等
- 利用批处理编译 keil 工程
:: 使用指令编译 keil 生成 bin 文件
@echo off
:: UV配置为KEIL路径
set UV=C:\Keil_v5\UV4\UV4.exe
:: %~dp0 代表的是当前批处理文件所在完整目录
set BUILD_SCRIPT_DIR=%~dp0
:: UV_PRO_PATH配置为工程路径
set UV_PRO_PATH=%BUILD_SCRIPT_DIR%\application.uvprojx
echo Init building ...
echo .>build_log.txt
:: %cd% 代表的是当前工作目录
%UV% -j0 -r %UV_PRO_PATH% -o %cd%\build_log.txt
:: -j0, -r, -o 均为 keil 编译配置
:: -j0 隐藏μVision GUI。消息被抑制。使用此选项进行批量测试
:: -r 重新构建上一个当前项目目标,并在构建过程完成后退出
:: -o 指定输出日志文件
type build_log.txt
echo Done.
Keil官网中的说明
- 利用批处理删除编译 keil 工程过程中的生成文件
del *.bak /s
del *.ddk /s
del *.edk /s
del *.lst /s
del *.lnp /s
del *.mpf /s
del *.mpj /s
del *.obj /s
del *.omf /s
::del *.opt /s ::不允许删除JTAG的设置
del *.plg /s
del *.rpt /s
del *.tmp /s
del *.__i /s
del *.crf /s
del *.o /s
del *.d /s
del *.axf /s
del *.tra /s
del *.dep /s
del JLinkLog.txt /s
del *.iex /s
del *.htm /s
del *.sct /s
del *.map /s
exit
|