項目自動化增量更新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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章