项目自动化增量更新bat

应用场景

项目发布上线之后,如果后续有修改,这里的修改,包括代码和数据两部分的内容,比如由于业务需求的变更,我们新增了若干个数据库表,或者新增了若干个表字段等等,此时如果想让我们的修改同步到线上,依靠手工的方式一个个去拷贝文件以及修改数据库表肯定不现实,为了应对这种场景,我做了一个自动化增量更新的脚本,目前只适合windows下运行。

在运行bat之前,我们需要作以下准备:

1. 把之前修改过的文件以及文件结构全部复制到一个目录中,比如 upload

2. 数据库的修改部分,全部记录在.sql文件中,该sql文件存放在 data 目录中

3. 运行bat,其内容如下:

@echo off
setlocal enabledelayedexpansion
::设置根目录
set root_path=%~dp0
:file_path
set /p file_path=请输入目标路径:
if not defined file_path (
	echo 无效的路径,请重新输入
	goto file_path
)
if not exist %file_path% (
	md %file_path%
)

::检查是否有sql脚本需要执行
set hasSql=0
for /R %root_path%data %%i in (*) do (
	if "%%~xi" == ".sql" (
		set hasSql=1
	)
)
::出于安全性方面考虑,先执行sql脚本
if %hasSql% == 1 (
	set /p execute_sql=更新文件中包含了sql脚本,确定执行该脚本吗(y/n)
	if "!execute_sql!" == "y" (
		:db_host
		set /p db_host=请输入数据库连接地址:
		if not defined db_host (
			set db_host=localhost
		)
		:db_name
		set /p db_name=请输入要使用的数据库名称:
		if not defined db_name (
			echo 无效的数据库名称,请重新输入
			goto db_name
		)
		:db_user_name
		set /p db_user_name=请输入数据库登录账号:
		if not defined db_user_name (
			echo 无效的登录账号,请重新输入
			goto db_user_name
		)
		:db_user_pwd
		set /p db_user_pwd=请输入数据库登录密码:
		for /R %root_path%data %%i in (*) do (
			if "%%~xi" == ".sql" (
				echo %%~nxi
				mysql -u!db_user_name! -p!db_user_pwd! -h!db_host! !db_name! < %root_path%data\%%~nxi
			)
		)
		echo sql脚本执行完毕
	)
)

::复制升级文件
echo 复制升级文件,请稍后...
for /R %root_path%upload %%i in (*) do (
	xcopy %root_path%upload %file_path%\ /e/y
)
echo 升级文件复制完毕

pause


发布了68 篇原创文章 · 获赞 42 · 访问量 30万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章