自动化部署之bat篇

前言

最近在写一个自动化部署脚本,因为产品涉及到十几个模块,每个模块都需要部署,纯手动部署太繁琐了,同时也很容易出问题,所需急需通过脚本来实现自动化部署,
主要需求:
需要通过bat脚本自动化从svn、ftp库中取出各模块包、数据、授权文件等,生成完整的安装部署包,减少人工取包带来的差异性导致的各种问题;
同时需要通过shell脚本在linux服务器上自动化部署各模块,包括tomcat、war包部署,现场配置修改,数据库备份、更新等,降低部署的复杂度,减少人为漏改错改配置等引发的问题

因为自己之前基本没咋写过bat脚本和shell脚本,linux也仅会一些系统的常规操作命令,所以只能紧急的边学边用,摸石头过河,所幸经过努力后不负所托,基本实现了功能需求,
现将最近这段时间自己边学边用的bat脚本和shell脚本两部分用到的主要功能和实现方案整理记录,供自己后续查阅,有需要的同学也可以参考

bat篇

bat脚本判断目录是否存在、延迟环境变量扩展功能

::启用了延迟环境变量扩展功能
setlocal enableDelayedExpansion
set disk=G:\
if exist !disk! (
  echo 1分区是!disk!
) else (
  set disk=C:\
  echo 2分区是!disk!
) 
echo 3分区是!disk!
::关闭了延迟环境变量扩展功能
setlocal disableDelayedExpansion

注意,!disk!只有在启用了延迟环境变量扩展功能才生效
此处如果将!disk!换成%disk%,则else中输出是:2分区是G:\,不过if外输出的是:2分区是C:
如:

set disk=G:\
if exist %disk% (
  echo 1分区是%disk%
) else (
  set disk=C:\
  echo 2分区是%disk%
) 
echo 3分区是%disk%

bat脚本删除文件夹、创建文件夹

::删除文件夹并创建空文件夹
rd /s /q "%xxx%" && md "%xxx%"

bat脚本svn取东西

svn export http://svnip/svn/xxx/xxx.zip %disk% --username xxx --password xxx --force

bat脚本判断文件是否存在

::read config file
if not exist %disk%\xxx.txt (
	call:printStr 获取失败!
	pause
	exit
)

bat脚本读取配置文件内容

for /f "tokens=1,2 delims==" %%i in (%disk%\xxx.txt) do (
	if "%%i"=="1-aaa" set aaa=%%j
	if "%%i"=="2-bbb" set bbb=%%j
	if "%%i"=="3-ccc" set ccc=%%j
)

bat脚本ftp取东西

set ftp_ip=ftpip
call:printStr 正在从FTP获取data
set ftpFile=%currentDir%/temp.txt
>"%ftpFile%" (
  echo,%ftp_user%
  echo,%ftp_pwd%
  echo cd "%ftpFolder%"
  echo lcd "%localDir%"
  echo bin
  echo mget *
  echo bye
)
ftp -v -i -s:"%ftpFile%" %ftp_ip%
call:printStr 完成获取data

bat脚本压缩、过滤

::备份命令 -xr!.svn过滤.svn文件夹
echo 压缩包
set zip7=C:\Program Files\7-Zip\7z.exe
"%zip7%" a -tzip "%disk%\xxx.zip" "%disk%\xxx" -mx0 -xr!.svn

bat脚本定义函数

::define function printStr start
:printStr
echo.
echo /******************************************************/
echo %1
echo /******************************************************/
echo.
goto:eof
::define function printStr end

你可能感兴趣的:(windows,bat脚本)