Windows 批处理的应用小结(ProtoBuf编译自动化工具)
作者:ufgnix0802
这篇文章主要介绍了Windows 批处理的应用(ProtoBuf编译自动化工具),下面使用构建一个将ProtoBuf源文件生成C++源文件以及C#源文件的自动化批处理工具为例,需要的朋友可以参考下
Windows批处理的应用(ProtoBuf编译自动化工具)
批处理概述
批处理,顾名思义就是可以批量处理,也称为批处理脚本,英译名为BATCH,后缀名.bat也是由此而来。他的构成没有固定的格式,只要遵循:每一行可视为一条命令,每条命令里可以含多条子命令,从第一行开始执行,直至最后一行结束,它运行的平台是DOS即可。批处理的特点:使用方便、灵活,功能强大,自动化程度高。
实例(ProtoBuf编译自动化工具)
下面使用构建一个将ProtoBuf源文件生成C++源文件以及C#源文件的自动化批处理工具为例。
首先准备生成好的proto.exe(ProtoBuf编译器,运行ProtoBuf源码即可生成)以及ProtoBuf源文件,如下:
紧接着,我们创建批处理文件(bat文件),如下:
TIPS:上述三个文件放同一个路径下即可运行生成。
定义内容如下:
rem命令是批处理文件中的注释,相当于C++中的//。
@echo off rem echo off:关闭回显,批处理中的每一条命令都不会显示在显示器上。而echo off本身也是一条命令,如果不想让其显示,只需在前方加@符号即可。 SET CURRENT_PATH=%cd% rem 注意,SET等号左右两边不能有空格 rem 将等号右侧的值赋值给等号左侧的变量; rem 使用%包裹的字符(字符串)是一个变量; rem %cd%:点击的bat脚本的工作路径(最开始点击的bat脚本所在的路径)。 SET PROTOC_PATH=%CURRENT_PATH% SET PATH=%PATH%;%PROTOC_PATH% rem 将PROTOC_PATH所指向的路径添加到系统PATH环境变量中去(并不会永久改变环境变量,是临时性的) set target_path=. echo 编译: player.proto cpp && "%PROTOC_PATH%\protoc.exe" --cpp_out="%target_path%/" --proto_path "./" player.proto rem echo + message,用来在DOS界面打印消息,类似于C语言的printf。 rem &&符号在第三部分:常用特殊符号中有介绍,不再叙述。 rem 由于一开始开启@echo off,而&&后面部分为一条命令(将ProtoBuf源文件编译为C++源文件,包括.h、.cc文件),则在DOS界面中是不会显示的,即@echo off的屏幕效果不会因为&&而失效。 echo 编译: player.proto csharp && "%PROTOC_PATH%\protoc.exe" --csharp_out="%target_path%/" --proto_path "./" player.proto rem 原理同上。 echo 操作完成,按任意键退出 echo 完成时间 %date:~0,10% %time:~0,8% rem %date:~0,10%是批处理中用于取日期的命令。~0,10%类似于字符串截取。 rem %time:~0,8%是批处理中用于取时间的命令。~0,8%类似于字符串截取。 pause>nul&exit rem pause是批处理中按任意键退出,但是由于会显示一行中文,故使用>nul,用于屏幕标准输出在屏幕上的显示,即“按任意键退出”该行中文不会显示在DOS界面中。&符号的作用在第三部分:常用特殊符号已经介绍。 rem exit命名用于退出DOS控制台,当我们按任意键退出时,执行exit。
效果演示
常用特殊符号
命令 | 含义 |
---|---|
@ | 命令行回显屏蔽符 |
% | 批处理变量引导符 |
> >> | 输出重定向 > 传递并覆盖 >> 传递并在末尾追加 |
< >& <& | 管道命令,一般不常用 |
| | 命令管道符 |
^ | 转义字符,将特殊符号 < 、 > 、 & 的特殊功能去掉 |
& && || | 组合命令,就是把多个命令组合起来当一个命令执行。 & 命令是顺序执行的,从前往后执行 && 可以同时执行多条命令,当碰到执行出错的命令后,将不再执行后面的命令 || 可以同时执行多条命令,当第一个命令执行失败后,才执行第二条命令,当碰到执行正确的命令后将不再执行后面的命令 |
“ ” | 字符串界定符号 |
, | 相当于空格 |
; | 当命令相同时,可以将不同的目标用 ; 来隔离,但执行效果不变,如果执行过程中发生错误,则只返回错误报告,但程序仍会执行 |
( ) | 小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行 |
! | 在变量延迟问题中,用来表示变量,即 %var% 应该表示为 !var! |
批处理(bat) %cd% 与 %~dp0的区别
- %cd%是指:点击的bat脚本的工作路径(最开始点击的bat脚本所在的路径)。
- %~dp0是指:当前执行的bat脚本所在目录(随着执行脚本的变化而变化)。
TIPS:%~dp0可以在A.bat的命令行中运行B.bat时,获得B.bat所在的路径。
批处理(bat)将路径添加到PATH环境变量中的两种方式
环境变量:通过在环境变量里面加入所需软件的安装路径(exe文件所在路径),当我们想运行某一软件时双击其快捷方式或者在DOS界面输入软件名称(命令),此时,计算机除了在其当前目录下寻找该软件的.exe文件之外,还在环境变量中搜索该软件的执行路径,找到,则运行。
永久添加
TIPS:该方式需要有管理员权限。
@echo off rem 设置要永久加入到path环境变量中的路径 set My_PATH=D:AppFolder set PATH=%PATH%;%My_PATH% reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /f exit
临时添加
@echo off rem 设置要临时加入到PATH环境变量中的路径 set My_PATH=D:AppFolder set PATH=%PATH%;%My_PATH% rem 其它脚本命令todo pause
到此这篇关于Windows 批处理的应用(ProtoBuf编译自动化工具)的文章就介绍到这了,更多相关Windows 批处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!