在程序打包工作中遇到一些重复性的工作,手动固然可以完成,但过程繁琐,效率低下,具体问题如下:
问题1:打包程序时将编译好的程序文件夹拷贝到指定目录
问题2:将指定目录文件夹压缩成一个zip格式文件
问题3:压缩之前要将压缩包中的一些日志文件夹、无用文件删除
问题4:自动解压程序压缩包到指定目录
问题5:启动该程序;杀死该程序的进程
对于重复性的动作,脚本语言是一个有用的工具,这里使用批处理完成以上目标。
编写批处理命令
(1)设置批处理参数
::设置软件编译Debug生成目录 set programPath=F:\MyProgram\Debug ::设置发布根目录(路径中的中文名称用双引号引用) set programPublishRootPath=F:\"发布目录" ::设置软件发布目录 set programPublishPath=%programPublishRootPath%\MyProgram ::设置压缩包目录(本机安装的压缩程序WinRAR目录)
set winrarPath=C:\Programs\WinRAR\WinRAR.exe ::设置压缩包名称 set compressFileName=MyProgram.zip
(2)编写批处理命令
::问题1:打包程序时将编译好的程序文件夹拷贝到指定目录 ::不存在则创建备份目录 if not exist %programPublishPath% md %programPublishPath% xcopy %programPath% %programPublishPath% /s /e /y ::问题2:将日志文件夹及其中文件删除 rd /s /q %programPublishPath%\Log ::问题3:将指定目录文件夹压缩成一个zip格式文件(压缩与解压缩命令参考winrar帮助文档) %winrarPath% a -afzip -ep1 -o+ %programPublishRootPath%\%compressFileName% %programPublishPath% ::问题4:自动解压程序压缩包到指定目录 %winrarPath% x -ibck -y %programPublishRootPath%\%compressFileName% E:\ ::问题5:启动该程序;杀死该程序的进程 ::(1)启动程序 start E:\MyProgram\MyProgram.exe ::(2)杀死进程 taskkill /f /IM MyProgram.exe /t
总结曾经使用过批处理解决过的问题:
- 文件夹创建、复制、删除等
- 启动Windows Service
- 启动程序、杀死进程
- 每日定时SVN 同步
- 创建程序桌面快捷方式
- ping 指定机器是否连通
- 注册ocx组件
- 源代码项目根据模板自动生成程序集信息类
- 程序自动化发布
- 程序打包、压缩、解压
- FTP自动上传、下载文件
思考问题:
-
批处理用在什么地方?哪些场景批处理是常客,不该被遗忘?不断重复要做的事情,考虑将这个过程自动化。
-
除了批处理还有哪些类似方案?Windows平台中的PowerShell,脚本语言Python……
-
批处理的本质是什么?逐条执行的程序,交互程序,交互工具。
-
批处理好处虽多,但很多人并未从中受益?图形化vs命令行,多数人习惯用界面操作,界面操作主要通过鼠标和操作系统交互,入门容易,习惯一旦形成很难去打破;批处理是命令行操作,需要敲入命令和操作系统交互,入门有一定难度,人天性抗拒困难