自动更新打包压缩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

猜你喜欢

转载自blog.csdn.net/sujun10/article/details/73694689