用bat来提高工作效率

项目发布流程通常是手工的,需要加密,编译模块,改名,svn提交,生成版本号。上传svn服务器。手工发布效率很低。还容易出错。就写了个bat脚本 。

本来是打算写ant脚本的。但ant脚本需要环境支持,还是用bat算了。

关键的语法解析:

%~d0 定位到bat所在盘符
cd %~dp0 定位到bat目录
find "isDebug" %sysnet%|find "true">nul 检测as文件开关是否是发布版本
mydailybuild\bin\adl mydailybuild\bin\aidiTestCode-app.xml -- %projectPath%bin-debug\ 0 1 给air程序传递参数来加密素材

还有就是遍历模块编译bat,不再详细写出了。代码如下:

::aidiTestCode-app.xml
::递归加密目录 目录 ,1,0
::非递归加密目录 目录 ,0,0
::加密单个文件 文件,1,0
::加密主文件 目录 ,0,1
@echo off
::工程路径 ,项目路径改变时请更改
%~d0
cd %~dp0
cd ..
set projectPath=%cd%\
:: 每个bat生成的编译数
set pageNum=15
::不同版本的素材别称 tw\
::set langType=tw\ ::下面的变量不要配置
set buildPath=%projectPath%bin-build
set versionPath=%projectPath%src\%langType%assets
set modulesPath=%versionPath%\app
set versionFile=%versionPath%\ui\common\filever.xml
set ucommon=%versionPath%\ui\common
set u7kcommon=%versionPath%\ui\7k7k\common
set sysnet=%projectPath%src\etc\net\SysNet.as
find "isDebug" %sysnet%|find "true">nul
if %errorlevel% equ 0 ( echo 不是发行版本,请修改SysNet.as pause exit
)
echo 是发行版本
echo *****
echo 1 大陆版 2台湾版
set /p langTypeChoice="选择编译版本 " if %langTypeChoice% EQU 1 (set langType=) if %langTypeChoice% EQU 2 (set langType=tw)
%~d0
cd %~dp0
echo 开始发布主程序
call "Main.bat"
%~d0
cd %~dp0
echo 开始生成模块编译文件
mydailybuild\bin\adl mydailybuild\bin\scriptBuilder-app.xml -- %projectPath% %pageNum% %langType%
echo 开始加密主程序
mydailybuild\bin\adl mydailybuild\bin\aidiTestCode-app.xml -- %projectPath%bin-debug\ 0 1
move /y "%projectPath%bin-debug\utils.tempdata" "%ucommon%"
move /y "%projectPath%bin-debug\events.tempdata" "%ucommon%"
mydailybuild\bin\adl mydailybuild\bin\aidiTestCode-app.xml -- %projectPath%bin-debug\7k7k\ 1 0
move /y "%projectPath%bin-debug\7k7k\utils.tempdata" "%u7kcommon%"
move /y "%projectPath%bin-debug\7k7k\events.tempdata" "%u7kcommon%"
echo 移动加密好的主程序成功
:beginCode
setlocal enabledelayedexpansion
echo ********
echo 请输入选项:
echo -2 直接生成版本号xml
echo -1 编译并加密所有模块
echo 0 退出
for /f "tokens=*" %%i in ('dir /s/b %buildPath%\modules*.bat') do ( set batPath=!batPath!%%i; set /a count=!count!+1 echo !count! %%~ni )
set /p coi="请输入选项: " if %coi% EQU -2 (goto createVersion) if %coi% EQU -1 (goto codeAll) if %coi% EQU 0 (exit)
for %%m in (!batPath!) do ( set /a counta=!counta!+1 if %coi%==!counta! ( for /f "tokens=4 delims= " %%x in ('find "mxmlc" %%m') do ( set tempstr=%%x set "tempstr=!tempstr:/=!" set oneModuleSwfPath=%projectPath%!tempstr:~6! call %%m %~d0 cd %~dp0 mydailybuild\bin\adl mydailybuild\bin\aidiTestCode-app.xml -- !oneModuleSwfPath! 1 0 del !oneModuleSwfPath! echo !oneModuleSwfPath! ok endlocal pause ) goto beginCode )
)
:codeAll
echo 编译所有模块
for /f "tokens=*" %%j in ('dir /s/b %buildPath%\all*.bat') do ( call "%%j" )
%~d0
cd %~dp0
echo 加密模块
mydailybuild\bin\adl mydailybuild\bin\aidiTestCode-app.xml -- %modulesPath% 1 0
echo 加密模块成功,清除swf
for /f "tokens=*" %%k in ('dir /s/b %modulesPath%*.swf') do ( del "%%k" )
goto beginCode
:createVersion
echo ******
echo 提交模块 (1 提交 0不提交 )
set /p commitAll="是否提交所有更改: "
if %commitAll% EQU 0 (goto createXML)
if %commitAll% EQU 1 (
echo 提交所有更改模块
svn commit -m "commit modules" %modulesPath%
echo 提交7k7k更改
svn commit -m "commit 7k7kcommon" %u7kcommon%
echo 提交common更改
svn commit -m "commit normalcommon" %ucommon%
pause
)
:createXML
echo 生成版本号xml
cd %versionPath%
svn status assets . -v --xml>%versionFile%
echo 转换版本号文件
%~d0
cd %~dp0
mydailybuild\bin\adl mydailybuild\bin\createVersion-app.xml -- %versionFile%
echo 加密版本号文件
mydailybuild\bin\adl mydailybuild\bin\aidiTestCode-app.xml -- %versionFile% 1 0
del %versionFile%

等有时间改成ant脚本试试