自动发布脚本的编写过程

近日领导让用脚本写个自动发布产品的脚本程序,之前都是手动下载复制的,因为本人没写过批处理文件,所以要从头开始学,部分内容搞不定就用了一些工具。

需求如下:

从远程http中下载相应的jar包,其中一个jar包是web文件的压缩包,需要解压后去除里面的.svn文件夹,由于远程机器的svn版本较低,.svn文件夹分布在各级子文件夹中,手动去除非常麻烦。最后将下载的jar包重命名后放在指定的目录中,web文件夹要覆盖原来已经存在的文件。

第一步:从远程通过http协议下载相应的jar包。

刚开始想到的是通过start命令打开相应的网页进行下载,命令如下:

start http://1.1.12.11/Release/1.6_20140630-44874_113127/map-web2.jar  

这种方式会在浏览器中打开相应的页面,执行下载,浏览器会弹出提示框是否要保存,需要手动确认,此方案不太合适,被pass掉了。

于是就想不通过浏览器进行下载,后来查到一些工具,如:URL2FILE,CURL等,于是就下载了URL2FILE进行尝试,http://www.chami.com/free/url2file_wincon.html#Download

安装后重启计算机,即可使用如下命令进行下载了。

URL2FILE http://1.1.12.11/Release/1.6_20140630-44874_113127/map-web2.jar  

依此下载map-ui.jar和map-dev.jar。

第二步:将需要重命名的jar包重命名。

需要将map-dev.jar重新命名为map-dev-1.6.jar命令如下:

ren map-dev.jar map-dev-1.6.jar  

第三步:将相关jar包覆盖到指定目录中的jar包。

先用set命令设置环境变量,代码如下:

set MAP_PATH="F:\map-release"  

然后就可以用用环境变量代替较长的路径了,移动命令为:

move /Y map-ui.jar %MAP_PATH%\bin  
move /Y map-dev-1.6.jar %MAP_PATH%\WEB-INF\lib  

其中 /Y 表示取消覆盖已经存在目标的提示。

第四步:解压web.jar。

解压可用winrar进行解压,命令如下:

set rar="C:\Program Files\WinRAR\WinRAR.exe"  
%rar% x map-web2.jar "web2\"

表示将map-web2.jar解压到web2文件夹中

第五步:除去各级.svn目录。

在此步骤中花费一天多的时间,刚开始是想用for循环递归,由于命令行没有break和continue,所以搞了好久也没搞出来,以后有时间再研究如何写递归遍历。

后来发现svn1.7以后 d中有个upgrade命令,可以将原来的较低版本的.svn升级到较高的版本,也就是可以将分散的.svn文件合并到最外层的.svn中。

由于没找到TortoiseSVN在命令行中的调用upgrade的方法,就下载了subversion,http://subversion.apache.org/packages.html#windows

set svn="D:\Program Files\Subversion\bin\svn.exe"
%svn% upgrade web2
rd /S /Q web2\.svn

第六版:将清理过的web文件夹覆盖指定目录下的web文件夹。

xcopy /S /Y web2 %MAP_PATH%\web2

svn

相关推荐