当前位置: 首页 > news >正文

MTK工作中可以使用的批处理脚本

MTK的独特的开发方式,大大缩短了开发的周期。

以至于到了后期,手机开发变成了一个拼价格,拼速度的过程。

在一些小公司,有些开发周期短短的不到一星期,而且既要面对客户无休止的修改,甚至可能一个人会负责三个以上的项目。

如何提高个人工作效率,成为许多开发者难以回避的问题。

一个好的想法,就是尽量把电脑能做的工作让电脑做,电脑搞不定的工作再由人来实现。

这让我们想起DOS早期的批处理,不错,这些脚本成了很不错的选择,可以大大减轻我们的工作量。

介绍几个我常常使用的脚本:

1.删除SVN版本文件,使用SVN管理版本的公司,有时会遇到这个问题,当然你搜索SVN,然后把找到的全部删掉,也是可以的,但有了太多的人的活动,这个工作可以由电脑自己完成。下面是我使用脚本:

for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn" | @echo %%a

这是个很简单的使用FOR实现循环删除文件夹并显示删除内容的脚本,因为RD不支持连续删除,但有了FOR就可以实现这一效果了。

2.如果使用CVS管理,改一下就可以了。

for /r . %%a in (.) do @if exist "%%a\.cvs" rd /s /q "%%a\.cvs" | @echo %%a

3.我们的代码全SVN管理,我可以使用下面的脚本,使电脑自己实现从SVN库中下载代码,编绎程序,如果你要使用,大概需要针对你自己的项目做一些修改。

title fzd_x760b_01
svn export http://mtksoftver/6225_06B/Branch/X760B/Version/FZD_X760B_03/1.0T01
ipmsg /msg jiazhiguo svnfinished
@for /d %%x in (*) do cd %%x\main
call copyfile FZD_X760B_01
ipmsg /msg jiazhiguo copyfinished
call make x225b gprs new
ipmsg /msg jiazhiguo make finished

该文件修改CMD窗口标题,接着执行SVN EXPORT命令从SVN下载文件,下载完成后,我使用飞鸽给自己发消息说明下载完毕,然后MAIN文件夹执行拷贝私有文件,接着编绎该项目。编绎完后我就可以去查看编绎结果,发版本。

4.有时我们会为输入常常的编绎指令而痛苦,影响了时间,这时我会使用下面的批处理,把该批处理放到MAIN文件夹下,起名为NEWMAKE,到该目录下,直接双击该文件,就可以NEW我们的项目了,唯一需要解释的是,你要保证你的MAKE文件夹下只有一个项目。

cd make
if exist *gprs.mak goto gprs
if exist *gsm.mak goto gsm
echo 找不到可用的MAKE文件
goto end
:gprs
for %%x in (Verno*.bld) do set a=%%x
cd ..\
make %a:~6,-4% gprs new
goto end
:gsm
for %%x in (Verno*.bld) do if set a=%%x
cd ..\
make %a:~6,-4% gms new
:end

该批处理会分析我们的make文件和VERNO文件,确定项目的类型和项目名称,自己启动NEW指令。

5.如果既想编程序,又想编模拟器,就可以使用下面的批处理。

call make LCSH23C_07B GPRS new
call make LCSH23C_07B GPRS gen_modis
call make LCSH23C_07B GPRS codegen_modis
call make -debug LCSH23C_07B GPRS new_modis

这个脚本太简单了,以至于不需要做过多说明,可能有人会奇怪,为什么使用CALL,不使用似乎也不会错,不使用有时候是会有错的,CALL是批处理调用子批处理的关键字。有了他可以保证在调用过程中一直在最初建立的那个命令行窗口。

6有些公司安装了分布式编绎器,这可是个好玩意,可以极大的提高编绎速度,特别是在公司电脑配置不太好的情况下,这无疑可以节省很多加班时间。但这一执行过程也可以使用批处理来完成,下面就是调用分布式编绎模拟器的批处理。

call m lc6225_gemini gprs gen_modis
call m lc6225_gemini gprs codegen_modis
IF NOT DEFINED MTK_COMPILE_SERVER set CMD_ARGU=-j16
IF NOT DEFINED MTK_COMPILE_SERVER set DISTRIBUTED_BUILD_CMD=XGConsole /command="
IF NOT DEFINED MTK_COMPILE_SERVER set DISTRIBUTED_BUILD_PARAMS=" /profile="profile.xml"
IF NOT DEFINED MTK_COMPILE_SERVER .\tools\IncrediBuildReg.exe
IF DEFINED MTK_COMPILE_SERVER set CMD_ARGU=-j4
IF DEFINED MTK_COMPILE_SERVER set DISTRIBUTED_BUILD_CMD=
IF DEFINED MTK_COMPILE_SERVER set DISTRIBUTED_BUILD_PARAMS=
BuildConsole .\MoDIS\modis.dsw /build /log=log.txt
pause

7.一般来说,编绎结束后,我们需要把生成的BIN软件和数据库校准文件打包发给测试部门或者客户,这一过程也是可以使用脚本的。

cd ..\..\build
@for /d %%x in (*) do cd %%x
for %%x in (*.bin) do set a=%%x
rar a ..\..\%a%.rar %a%
cd tst\database_classb\
rar a ..\..\%a%.rar BPLGUInfo*SrcP_*
把该脚本放在MAIN文件夹下,编绎完成后可以执行他,就可以把需要的文件使用项目名称打包。当然你如果需要邮件发给客户,大约可以写一个VBS脚本执行这一过程,这里不再赘述。

8.如果是下班情况下,就可以把以上的批处理使用CALL串连起来,甚至把多个项目串连起来执行。然后你就可以下班走人,让电脑做你以上的工作。当然这还不完美,因为你的电脑做完这些工作后,并没有休息,他还在消耗公司的电力资源,这是不应该的。最后一条指令,自动关机。

at 23:30 shutdown -s

这条指令的操作,可以实现在23:30分自动关机,也许你觉得这还不完善,因为也许你的电脑早早的就完成了工作,也许23:30还没有完成,你可以自己在AT后设置任意的时间,如果你害怕自己估计不准,那就把最后一条指令去掉AT和时间,然后加到最后一个批处理里,比如我们最后一个批处理可能是第七条,可以这样写:

cd ..\..\build
@for /d %%x in (*) do cd %%x
for %%x in (*.bin) do set a=%%x
rar a ..\..\%a%.rar %a%
cd tst\database_classb\
rar a ..\..\%a%.rar BPLGUInfo*SrcP_*
shutdown -s

压缩文件完成后就可以关机

还有几个注册表文件也挺有用。

在右键添加CMD,可以直接打开带路径的CMD,用于编绎:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\cmd\Command]
@="Cmd.exe /k cd \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\CMD\cmd]
@="Cmd.exe /k cd \"%1\""
[HKEY_CLASSES_ROOT\Drive\shell\cmd]
@="Cmd.exe /k cd \"%1\""

在右键添加重命名PBM菜单,可以把选中文件夹里的文件改为扩展名为PBM

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\ren PBM]

[HKEY_CLASSES_ROOT\Folder\shell\ren PBM\Command]
@="Cmd.exe /c cd \"%1\" & ren *.bmp *.PBM"

在右键添加重合名BMP菜单,可以把选中文件夹里的扩展名为PBM的改为BMP

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\ren bmp]

[HKEY_CLASSES_ROOT\Folder\shell\ren bmp\Command]
@="Cmd.exe /c cd \"%1\" & ren *.pbm *.bmp"

相关文章:

  • PHP排列组合算法
  • 通信运营商如何理性应对带号转网(1)
  • 使用MySQL触发器自动生成日汇总表
  • C#使用DES加解密数据
  • Install nodejs on CentOS 7+
  • WindowsMobile上C#通过DirectShow控制摄像头
  • MACBOOK 调教指北
  • 关于Apache无法加载PHP 7.2 curl模块问题的解决办法
  • 墙脆脆?!
  • 在群晖DS218+上编译Fluffos的Docker镜像
  • 将自己的SSH密钥对导入YubiKey 5的PIV和智能卡模块,配合Putty和XShell使用
  • 快照(Snapshot)技术发展综述
  • 国产开源硬件力作CanoKey,替代昂贵的Yubikey!
  • 在CentOS上升级OpenSSL 1.1.1k
  • firewall-cmd 常用命令
  • co.js - 让异步代码同步化
  • Consul Config 使用Git做版本控制的实现
  • download使用浅析
  • es6要点
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • extjs4学习之配置
  • FastReport在线报表设计器工作原理
  • gops —— Go 程序诊断分析工具
  • Java的Interrupt与线程中断
  • rc-form之最单纯情况
  • supervisor 永不挂掉的进程 安装以及使用
  • windows下如何用phpstorm同步测试服务器
  • 简单易用的leetcode开发测试工具(npm)
  • 浅谈Golang中select的用法
  • 原生 js 实现移动端 Touch 滑动反弹
  • 正则表达式
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #1014 : Trie树
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (Java数据结构)ArrayList
  • (二)Linux——Linux常用指令
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)模仿学习-Action数据的模仿
  • (生成器)yield与(迭代器)generator
  • (十六)一篇文章学会Java的常用API
  • .cfg\.dat\.mak(持续补充)
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET 材料检测系统崩溃分析
  • .Net 代码性能 - (1)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @PreAuthorize注解
  • [ C++ ] 继承