1. 程式人生 > >自動更新打包壓縮Json並上傳svn的bat指令碼

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

一、原由

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

要求:

  1. 全自動流程
  2. 不需要更改指令碼之類的(比如修改配置路徑等等)

二、策劃資料流程

這裡總結一下策劃資料到遊戲中使用資料的流程。
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的目錄結構

只有清晰地知道整個專案工程的各種目錄結構,才能寫出對應的指令碼。通過目錄的主要目的也是想要寫一個指令碼,但是不需要策劃去更改路徑,直接更新下指令碼就可以了。
總的svn目錄結構,包含客戶端資源assets,策劃資料data,可以檢視目錄結構,可以更好地理解指令碼為什麼沒要這樣寫,為什麼可以做到不用寫配置等等問題。

這裡寫圖片描述
進入策劃資料,是這樣的資料結構:
這裡寫圖片描述
client是所有的策劃表輸出的json檔案目錄
JsonMerge是json打包工具,真正的指令碼是寫在這裡的
這裡寫圖片描述


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

四、bat指令碼功能講解

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

更新當前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 http://192.168.1.111:8080/update.php?v=default

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

<root isOpposite="true" input="../client" output="../../assets/config/cfg.json"/>

五、完整bat指令碼

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

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 http://192.168.1.111:8080/update.php?v=default