之前由于公司的打包脚本都是在mac系统上执行的,所以都是用shell写的命令,但是有次需要在windows上打包,此刻的我只好把shell改成bat了,踩了很多小坑,淦。
记录打包时间
if %time:~0,2% LEQ 9 (
set startTime=%Date:0,4%%Date:5,2%%Date:8,2%0%Time:1,1%%Time:~3,2%
) else (
set startTime=%Date:0,4%%Date:5,2%%Date:8,2%%Time:0,2%%Time:~3,2%
)
echo 开始执行的时间:%startTime%
数组
bat是没有数组的,而shell有,所以这个改起来很麻烦。
setlocal enabledelayedexpansion
set LocalizationID=6
set LocalizationArray=Null China TaiWan Korea Vietnam Thailand China2
set WwiseLocalizationArray=TaiWan Chinese Chinese Korea Vietnam Thailand Chinese
echo 数组取某个特定的值-----------------------
set temp1=0
for %%a in (%LocalizationArray%) do (
if %LocalizationID%==!temp1! (
set LocalizationName=%%a
)
set /a temp1+=1
)
echo %LocalizationName%
for循环遍历时,每次都设置temp1+=1,但实际上在for循环中%temp1%的值一直都是初始值0,它并不会马上执行+1的操作,所以需要在上面加一句setlocal enabledelayedexpansion,使其延时生效,然后通过!temp1!取到的值才是+1之后的值。
:: 我只会这样取LocalizationName=LocalizationArray[LocalizationID]的值了,暂时没想到有更好的办法。
常用的判断
set aaa=-1
if %aaa% EQU -1 (
echo xxxxxaaaaaaaaaa
) else (
echo xxxxxxxxxbbbbbbbbbbb
)
EQU等于
NEQ不等于
LSS小于
LEQ小于等于
GTR大于
GEQ大于等于
输出外链的路径
set ProjectAssetsPath=E:\project_china_dev/China/Assets
echo “03.1-【开始定向更新China目录的外链SVN】”
set externalSvnCmd=svn pg svn:externals %ProjectAssetsPath%
set targetList=%externalSvnCmd%
for /f “tokens=1-2” %%i in (’%targetList%’) do (
echo %%j
)
输出某个文件夹下的文件名
set ProtobufDataCongsPath=E:\project_china_ope\China\Assets\Resources\ProtobufDataConfigs
for /f “delims=” %%i in (‘dir /b %ProtobufDataCongsPath%’) do (
echo %%i
)
判断某个文件是否存在
if exist %ProtobufDataCongsPath% (
echo 文件存在
)
强制关闭Unity进程
taskkill /im Unity.exe /f
svn操作
清除操作
svn cleanup %ProjectRootPath% --non-interactive
还原操作
svn revert %ProjectRootPath% -R --non-interactive
更新到对应版本
svn update -r %SvnUpdateVersion% %ProjectRootPath%
更到最新
svn update -r HEAD %BuildScriptPath%
删除文件
for /f “delims=” %%i in (‘dir /b %ProtobufDataCongsPath%’) do (
if %%i NEQ %LocalizationName% (
if %%i NEQ %LocalizationName%.meta (
echo “删除其他地区配置资源:”%ProtobufDataCongsPath%%%i
rmdir /s /q %ProtobufDataCongsPath%%%i
del /s /q %ProtobufDataCongsPath%%%i.meta
rmdir /s /q %ProtobufDataCongsSmallPath%%%i
del /s /q %ProtobufDataCongsSmallPath%%%i.meta
)
)
)
打包机提交构建AB后生成的资源MD5文件
svn add %CurMd5FilesPath%
svn commit -m “【n】【打包机提交】【打包机提交构建AB后生成的资源MD5文件】” %VersionMd5FilesPath%
创建文件夹
if not exist %SharedDiskPath% (
echo 创建共享盘路径:%SharedDiskPath%
md %SharedDiskPath%
)
复制文件
xcopy /s/e/y %PatchPath% %SharedDiskPath%