1.引言

本文档的编辑目的是为了实bat脚本自动打包功能,包含包的名字命名,压缩文件内外层文件夹的名字;包含svn版本号等;

2.实现介绍

1)获取svn号,生成批处理文件

写一个pak.bat文件写入下列内容,第一句是调用SubWCRev.exe文件传入参数生成pack.tmp.bat文件,第二句是调用生成的pack.tmp.bat文件;第三句是删除生成的文件;

"../../tools/SubWCRev.exe" ../../ pack.bat.t pack.tmp.bat -f

call pack.tmp.bat

del pack.tmp.bat

pause

2pack.bat.t文件模板

@rem win2000下测试通过

@rem 获取当前时间

@echo off

rem 系统不一样,日期格式有差别

for /f "tokens=1-10 delims=- " %%a in ('DATE /T') do set Date=ams_v1.11.0_svn$WCREV$_%%a%%b%%c_s

@xcopy /E /Y /I /EXCLUDE:uncopy.txt .\*.*  ..\ams

"C:\Program Files\WinRAR\WinRAR.exe" a -df -ibck ..\%Date%.zip ..\ams

Pause

3pack.tmp.bat真正的打包批处理文件

可以发现运行pack.bat文件,将文件pack.bat.t传入SubWCRev.exe后生成的pack.tmp.bat与pack.bat.t不同的地方就是文件的$WCREV$参数变成了svn号360515,这其实是用工具SubWCRev.exe获取程序的svn编号;在生成新的打包批处理文件;@标记的行都是备注;for /f 语句是bat的语句,用批处理in后面的数据或者字符串,tokens指定获取的数据个数,delims用来分割数据的分隔符,'DATE /T'表示系统时间,set设置变量;这句话的意思是获取系统时间,将a,b,c标记的年、月、日输入到变量Date中,生成压缩包的名称;xcopy语句是复制原路径下文件,到目标文件夹ams下,..\表示当前目录的上一级目录;参数/E表示复制目录和子目录,包括空文件夹;/Y参数表示如果目标目录有该文件则直接覆盖;/I表示如果目标文件夹不存在,又在复制一个以上的文件,则自动创建新的文件夹ams;/EXCLUDE:uncopy.txt表示排查的文件类型,在uncopy.txt中写明不复制的文件名称或者后缀名;.\*.*指定当前目录的所有文件;..\ams表示目标文件夹;下面一句则是调用压缩程序winRAR,需要系统安装了压缩程序,将安装路径用字符串写在开头,a表示添加文件,-df表示压缩成功后删除原有文件,如果要保留源文件则不加这个参数;-ibck表示在后台运行,不显示压缩界面和进度;后面的参数是压缩文件包的名称,用前面生成的字符串变量Date来命名;在后面是要被压缩的文件夹..\ams;

@rem win2000下测试通过

@rem 获取当前时间

@echo off

rem 系统不一样,日期格式有差别

for /f "tokens=1-10 delims=- " %%a in ('DATE /T') do set Date=ams_v1.11.0_svn360515_%%a%%b%%c_s

@xcopy /E /Y /I /EXCLUDE:uncopy.txt .\*.*  ..\ams

"C:\Program Files\WinRAR\WinRAR.exe" a -df -ibck ..\%Date%.zip ..\ams

pause

4uncopy.txt文件的内容

svn

.lib

.exp

.obj

.log

.db

.ilk

3.总结

综上所述,需要文件pak.bat、pack.bat.t、uncopy.txt、SubWCRev.exe四个文件,执行pak.bat文件,pak.bat文件将文件pack.bat.t传入SubWCRev.exe后生成的pack.tmp.bat,获取到svn号,再执行pack.tmp.bat文件,先获取到时间,和svn号一起组成压缩包的名称,然后复制文件到文件夹ams,再将ams压缩成指定名称的压缩包;最后再删除掉复制过程中生成的中间文件夹ams;就是这样一个过程;如果只是简单的复制文件;则直接使用pack.tmp.bat文件和uncopy.txt,按照自己的需求修改,执行即可;文件中的路径根据具体的路径去设置相对路径;最好是放在同一个文件夹下;

bat命令学习链接

https://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html

xcopy详细学习链接

https://baike.baidu.com/item/xcopy

bat中RAR命令参数详解

https://www.cnblogs.com/len0031/p/5888560.html

bat自动打包压缩实现的更多相关文章

  1. vue-webpack项目自动打包压缩成zip文件批处理

    为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...

  2. Vue -- webpack 项目自动打包压缩成zip文件

    这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能 ...

  3. 使用Bat自动打包并通过FTP发送到备份服务器——实战测试

    这个bat文件要求本地安装有winrar解压软件,位置是:C:\Program Files\WinRAR\WinRAR.exe 如果执行报错,请检查你复制我的代码是否有问题,有些复制粘贴进去后因为一些 ...

  4. Jenkins 实现前端自动打包,自动部署代码及邮件提醒功能

    在之前的公司,我们前端使用webpack构建项目,项目构建完成后,我们会使用ftp或linux的一些命令工具上传我们的文件到服务器上,这种方式虽然是可以,但是最近面试的时候,人家会问我前端如何部署项目 ...

  5. linux下如何打包压缩?解包解压?.tar文件.gz文件

    ===文件打包.压缩 ==打包 tar [root@521478.com]# tar -cvf etc1.tar /etc //c创建 v详细 f打包后文件名 [root@521478.com]# t ...

  6. Linux打包压缩.md

    Linux下打包压缩命令 下面学习一下压缩和打包的相关命令,首先得先明确两个概念,即:压缩和打包 .我们实际使用中一般是打包和压缩结合的使用,为了学习下面简要的介绍一下压缩文件或目录的命令. 压缩:将 ...

  7. xcodebuild和xcrun实现自动打包iOS应用程序

    随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...

  8. C#实现APK自动打包

    C#实现APK自动打包     最近做了一个安卓项目,其中有一个自动打包的功能,要把供应商id写入APK后打包.   一.思路     在AndroidMinifest.xml中加入一个标识字段,如下 ...

  9. 【转】在ASP.NET MVC中,使用Bundle来打包压缩js和css

    在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原 ...

随机推荐

  1. MySQL如何插入测试数据

    关于插入MySQL测试数据,这里介绍两种方法: 选择优先级(结合PHP生成测试数据 > 使用存储过程 ). 使用存储过程(建议测试数据小于1000条使用该方法) 具体代码如下: 创建表: mys ...

  2. iOS 真机测试错误“The application bundle does not contain a valid identifier”

    iOS 真机测试错误"The application bundle does not contain a valid identifier" 真机测试的时候报错:"The ...

  3. Eclipse中使用Maven新建 Servlet 2.5的 SpringMVC项目

    1.前言: 最近在学习SpringMVC框架,由于使用Eclipse创建的webAPP项目默认使用的还是比较旧的servlet2.3,而且默认使用的还是JDK1.5,所以便有一次开始了我的配置之路 2 ...

  4. Codeforces Round #395 (Div. 2)(A.思维,B,水)

    A. Taymyr is calling you time limit per test:1 second memory limit per test:256 megabytes input:stan ...

  5. [bzoj2594][Wc2006]水管局长数据加强版 (lct)

    论蒟蒻的自我修养T_T.. 和noi2014魔法森林基本一样...然而数据范围大得sxbk...UPD:这题如果用lct判联通的话可能会被卡到O(mlogm)..所以最好还是用并查集吧 一开始数组开太 ...

  6. JAVA多线程之CountDownLatch

    前序: 上周测试给开发的同事所开发的模块提出了一个bug,并且还是偶现. 经过仔细查看代码,发现是在业务中启用了多线程,2个线程同时跑,但是新启动的2个线程必须保证一个完成之后另一个再继续运行,才能消 ...

  7. D触发器深入详细介绍(zhuanzai)

    D触发器深入详细介绍,D触发器是对输入时钟脉冲边沿信号敏感的装置.只有在检测到边沿信号,才设置输出信号与输入端D相同.一个基础的电平触发装置是门控D锁存器. D触发器(英文中“D”代表“Data”,“ ...

  8. UEP-添加表格

    UEP中添加新的表格标签:function initCustomToolBar(){ var strHtml="<table> <tr> <td id=\&qu ...

  9. 狗书无敌,天下第一(flask基础)

    为什么选择使用flask? 和其他框架相比, Flask 之所以能脱颖而出,原因在于它让开发者做主,使其能对程序具有全面的创意控制. 在 Flask 中,你可以自主选择程序的组件,如果找不到合适的,还 ...

  10. java IO流、集合类部分小知识点总结

    在Java中,以下三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法. InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输 ...