批处理bat踩坑记

之前由于公司的打包脚本都是在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%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值