自動更新打包壓縮Json並上傳svn的bat指令碼

2021-08-02 23:47:36 字數 3224 閱讀 7035

策劃用xlsx匯出多個json資料之後,需要打包成乙個大的json檔案,然後這個客戶端程式需要用這個檔案。那麼問題來了,策劃不想要每次都需要手動做操作,希望程式寫個指令碼,每次只要執行指令碼,就可以完成一整套動作,最後上傳更新到伺服器去。

要求:

全自動流程

不需要更改指令碼之類的(比如修改配置路徑等等)

這裡總結一下策劃資料到遊戲中使用資料的流程。

1. svn更新最新的策劃資料文件和輸出的json資料

2. 執行json打包應用程式,生成乙個綜合大的datas.json檔案

3. 刪除掉原來svn中的datas.zip檔案,並且更新

4. 把datas.json用zip程式壓縮成datas.zip

5. 把最新的datas.zip提交到svn去

6. 呼叫內網伺服器,把svn上的datas.zip同步到web伺服器去

這裡解釋一下:

提交到svn去,是給程式用的,程式更新下來就是策劃最新的策劃資料了。

更新到內網伺服器去,是內網遊戲用的,也就是正在執行測試的遊戲伺服器

只有清晰地知道整個專案工程的各種目錄結構,才能寫出對應的指令碼。通過目錄的主要目的也是想要寫乙個指令碼,但是不需要策劃去更改路徑,直接更新下指令碼就可以了。

總的svn目錄結構,包含客戶端資源assets,策劃資料data,可以檢視目錄結構,可以更好地理解指令碼為什麼沒要這樣寫,為什麼可以做到不用寫配置等等問題。

進入策劃資料,是這樣的資料結構:

client是所有的策劃表輸出的json檔案目錄

jsonmerge是json打包工具,真正的指令碼是寫在這裡的

可以看到這裡有乙個aopenjsonmerge.bat的檔案了,我們這裡的主角。同時還有7z這個壓縮軟體以及svn程式,放在這裡主要是方便指令碼呼叫。

先介紹單個指令碼的用途。

更新當前svn目錄:

%~dp0"svn1.8\svn.exe" up
更新指定的svn目錄

%~dp0"svn1.8\svn.exe" up %assets_path%
檢測json打包工具程式,如果在任務列表中找不到了,則繼續後面的指令碼

:check

tasklist /nh | find "jsonmerge.exe">nul && (ping -n 1

127.1>nul&goto check)

注意,jsonmerge執行完是會自動關閉。

壓縮json指令

%~dp0"7z\7za.exe" a -tzip %jsonfilepath

%\assets\config\cfg.cfg %jsonfilepath

%\assets\config\cfg.json

提交svn資料

%~dp0"svn1.8\svn.exe" commit %assets_path

%\cfg.cfg -m "update cfg.cfg"

最後呼叫內網伺服器的php指令碼,這個指令碼的工作是更新伺服器上的svn資源,並且複製到指定的web目錄下

start 

.1.111:8080/update.php?v=default

最後看下jsonmerge的配置檔案,採用了相對目錄位置,所以不需要額外配置路徑

isopposite="true"

input="../client"

output="../../assets/config/cfg.json"/>

這個是實際生產環境中修改而來的指令碼,雖然簡單,但是完成的功能卻不少,真是非常方便。實際專案過程中,總會使用到各種自己寫的指令碼來提交專案的開發效率。

echo update the planning data

%~dp0"svn1.8\svn.exe" up ..\data\

%~dp0"svn1.8\svn.exe" up ..

set assets_path=..\..\assets\config

echo del cfg.json

del %assets_path

%\cfg.json

del %assets_path

%\cfg.cfg

%~dp0"svn1.8\svn.exe" up %assets_path%

del %assets_path

%\cfg.cfg

echo jsonmerge json

start %~dp0"jsonmerge.exe"

:check

tasklist /nh | find "jsonmerge.exe">nul && (ping -n 1

127.1>nul&goto check)

cd ..

cd ..

set jsonfilepath=%cd%

cd data

cd jsonmerge

%~dp0"7z\7za.exe" a -tzip %jsonfilepath

%\assets\config\cfg.cfg %jsonfilepath

%\assets\config\cfg.json

%~dp0"svn1.8\svn.exe" commit %assets_path

%\cfg.json -m "update cfg.json"

%~dp0"svn1.8\svn.exe" commit %assets_path

%\cfg.cfg -m "update cfg.cfg"

start .1.111:8080/update.php?v=default

自動更新原理

安裝補丁的時候,客戶端的主程式一般是要關閉的,除非採用動態解除安裝 調入元件的技術,比如網路遊戲,就是盡量讓玩家邊玩遊戲邊更新。人們嫌這樣的公升級仍然太麻煩,後來出現了b s結構,大家像抓住了救命稻草一樣的追捧至今,希望能從這些勞動中解脫出來。b s結構就是瀏覽器 伺服器結構,它所有的功能,都是在瀏...

自動更新元件

一些說明 自動更新幾乎每個程式都有。而自動更新的基本方法就是 1.比較本地版本與伺服器上的版本,做出是否需要更新的判斷 配置檔案的格式如下 xml version 1.0 encoding gb2312 configmodel xmlns xsi xmlns xsd ver 2.0ver 版本號 p...

自動更新元件

一些說明 自動更新幾乎每個程式都有。而自動更新的基本方法就是 1.比較本地版本與伺服器上的版本,做出是否需要更新的判斷 配置檔案的格式如下 xml version 1.0 encoding gb2312 configmodel xmlns xsi xmlns xsd ver 2.0ver 版本號 p...