您的位置:首页 > 运维架构 > Shell

win shell和macos shell脚本实例

2017-06-13 10:21 253 查看
本实例的功能是命令行输入的Excels文件名和sheet名,输出符合protobuf格式的data数据文件和.cs存取类,分别提供了win和mac版本的脚本代码。

第一步,将xls经过python的xls_deploy_tool.py转成data和proto

第二步:用proto.protobin把proto翻译成cs

第三步:将data和cs拷到Assets里

win shell脚本:

@echo off
set XLS_NAME=%1
set SHEET_NAME=%2

echo.
echo =========Compilation of %XLS_NAME%.xls=========

::---------------------------------------------------
::第一步,将xls经过xls_deploy_tool转成data和proto
::---------------------------------------------------
set STEP1_XLS2PROTO_PATH=.\step1_xls2proto
@echo on
cd tool\%STEP1_XLS2PROTO_PATH%

@echo off
echo TRY TO DELETE TEMP FILES:
del *_pb2.py
del *_pb2.pyc
del *.proto
del *.data
del *.log
del *.txt

@echo on
python xls_deploy_tool.py %SHEET_NAME% ..\..\..\..\Excels\%XLS_NAME%.xls

::---------------------------------------------------
::第二步:把proto翻译成cs
::---------------------------------------------------
cd ..

set STEP2_PROTO2CS_PATH=.\step2_proto2cs
set PROTO_DESC=proto.protobin

cd %STEP2_PROTO2CS_PATH%

@echo off
echo TRY TO DELETE TEMP FILES:
del *.cs
del *.protobin
del *.txt

@echo on
dir ..\%STEP1_XLS2PROTO_PATH%\*.proto /b  > protolist.txt

@echo on
for /f "delims=." %%i in (protolist.txt) do protoc ..\%STEP1_XLS2PROTO_PATH%\*.proto --descriptor_set_out=%PROTO_DESC% --proto_path=..\%STEP1_XLS2PROTO_PATH%
for /f "delims=." %%i in (protolist.txt) do ProtoGen\protogen -i:%PROTO_DESC% -o:%%i.cs

cd ..

::---------------------------------------------------
::第三步:将data和cs拷到Assets里
::---------------------------------------------------

@echo off
set OUT_PATH=..\..\..\client\Assets\StreamingAssets
set DATA_DEST=DataConfig
set CS_DEST=Scripts\Server\DataConfig\ProtoGen

@echo on
copy %STEP1_XLS2PROTO_PATH%\*.data %OUT_PATH%\%DATA_DEST%
copy %STEP2_PROTO2CS_PATH%\*.cs %OUT_PATH%\%CS_DEST%

::---------------------------------------------------
::第四步:清除中间文件
::---------------------------------------------------
@echo off
echo TRY TO DELETE TEMP FILES:
cd %STEP1_XLS2PROTO_PATH%
del *_pb2.py
del *_pb2.pyc
del *.proto
del *.data
del *.log
del *.txt
cd ..
cd %STEP2_PROTO2CS_PATH%
del *.cs
del *.protobin
del *.txt
cd ..

::---------------------------------------------------
::第五步:结束
::---------------------------------------------------
cd ..
pause
@echo on


macos shell:

#!/bin/sh
#.xls to .data and .proto
XLS_NAME=$1
SHEET_NAME=$2
XLS_SOURCE_PATH=../../../../../Excels/${XLS_NAME}.xls
#.proto to cs
cd ./protogen-master
STEP1_XLS2PROTO_PATH=step1_xls2proto
STEP2_PROTO2CS_PATH=step2_proto2cs
#1 .excel to .data and .proto
# delete cur file and copy to dir
cd ${STEP1_XLS2PROTO_PATH}
rm *.txt
rm *.proto
rm *.data
rm *.log
rm *_pb2.py
rm *_pb2.pyc
echo ${SHEET_NAME}
echo ${XLS_SOURCE_PATH}
python xls_deploy_tool.py ${SHEET_NAME} ${XLS_SOURCE_PATH}
#2 .proto to .protobin and .protobin to .cs
cd ../${STEP2_PROTO2CS_PATH}
rm *.protobin
rm *.proto
rm *.txt
rm *.cs
PRODESC=proto.protobin
ls ../${STEP1_XLS2PROTO_PATH}/*.proto > protolist.txt
for filePath in $(cat protolist.txt)
do
fileName=$(basename $filePath .proto)
protoc ../${STEP1_XLS2PROTO_PATH}/*.proto --descriptor_set_out=${fileName}.protobin --proto_path=../${STEP1_XLS2PROTO_PATH}
mono protogen.exe -i:${fileName}.protobin -o:${fileName}.cs
echo ${fileName}
done
# echo ../${STEP1_XLS2PROTO_PATH}/*.proto echo $(basename $filePath .protobin)
#protoc ../${STEP1_XLS2PROTO_PATH}/*.proto --descriptor_set_out=${PRODESC}
#for filePath in 'cat $protolist.txt' do mono protogen.exe -i:${PRODESC} -o:$(basename $filePath .protobin).cs
#3. copy to work space
OUT_PATH=../../../../client/Assets/StreamingAssets
DATA_DEST=${OUT_PATH}/DataConfig
CS_DEST=${OUT_PATH}/Scripts/Server/DataConfig/ProtoGen
cd ../
cp ${STEP1_XLS2PROTO_PATH}/*.data ${DATA_DEST}
cp ${STEP2_PROTO2CS_PATH}/*.cs ${CS_DEST}
echo 'successful!'


在unity3d游戏开发中,将策划Excels表转换为.data和.cs的详细实现过程为:

一、windows下构建Excel表:

1、安装环境:

1).先按照python2.7.7,cmd下执行python成功即可。

2).安装第三方插件protobuf-2.5.0和xlrd-1.0.0.tar,安装方法是解压文件,均到解压文件的setup.py下(protobuf-2.5.0在python子目录下)执行:

python setup.py install

2、执行转表:

1)建表

在项目的c1\Excels建表,建立表的格式参考:goods_info_template.xls,详细格式见Excels下的:xls_deploy_tool.py内的注释。

Sheet名要求大写,名字最好和表名一样,或者以表名为前缀。

保存为.xls格式(97-2004版本)。

2)转表

cmd 到c1\tools\ExcelToProto目录下,执行命令:

build Scenes SCENE_INFO

PS:参数Scenes是表明,参数SCENE_INFO是Sheet名字(大写)。

二、MacOS下构建Excel表:

1、安装环境

1)安装Excels
http://bbs.feng.com/read-htm-tid-9704285.html
2).安装protobuffer
http://www.cnblogs.com/yanghuahui/p/4448728.html
3).安装mono

参考:http://blog.csdn.net/zhuangyou123/article/details/51482029

mono地址:http://www.mono-project.com/download/

2、执行转表

1)建表

和windows下一样。

2)转表

cd到c1/tools/ExcelToProto/mactool目录下,执行命令:

若第一次执行,获取执行权限:chmod x+u build.sh

转表:

./build Scenes SCENE_INFO

PS:参数Scenes是表明,参数SCENE_INFO是Sheet名字(大写)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: