windows批处理在androi开发中的作用

windows批处理是DOS时代的产物,现在已经很少人用了,以前的一些病毒高手,一些装机工具都在使用它。最近公司生产的安卓机器用QPST烧写,老是会出现蓝屏,死机,设备管理器有黄色感叹号,严重影响机器烧写速度,我们不是生产手机的,没那么大量,所以不是那种直接机器烧FLASH的,而是用USB烧写的。我们平时开发都是在cmd中用fastboot烧写的,所以就试着用windows批处理脚本完成了一键烧写工作(其实很多安卓开发者就是这么干的,比如boot.img和system.img,但是生产就得全烧,还得做出错处理),烧什么分区,什么文件是由rawprogram0.xml决定的(因为QPST烧写就是依赖这些配置文件的),经尝试可以的哈!

10分钟就会写批处理,这个就是个辅助工作,不要什么都去看,浪费精力,需要什么命令就查什么,现学现用,我就是这样。对于简单的使用,其实也没什么技术含量,称不上编程,能力自然不比C语言,类似shell,实质就是将系统可执行程序命令和第三方程序命令一条条的执行,当然还是有逻辑和分支流程的,这样的命令组合还是能发挥很大的作用的。

脚本命令有太多的语法说明我就不写了,好多人博客都有,我贴上我查阅的部分连接。然后就当做个记录吧!

http://www.bathome.net/  批处理之家

http://blog.163.com/z_tianshi/blog/static/13019688220108287534938/ WINDOWS批处理命令


需求:

1. 安卓机器需要安装上adb驱动,

2. 在C:\WINDOWS\system32放入adb和fastboot工具

3. 将BURN_D500.CMD放入待烧写镜像的目录


不上语法直接上完成的部分批处理样例:BURN_D500.CMD   (后缀为BAT和CMD都行,且不区分名字的大小写)

@ECHO OFF
REM 默认绿色字符 黑色背景;烧录过程出错,会以变为红色字符警告
color 0A
SET ADB_TMP_FILE=adb_tmp_.txt
SET CMD_TMP_FILE=cmd_tmp_.txt
title 物联网移动终端烧录工具
@echo                   前提:必须先进入bootloader模式才能运行本脚本!
@echo                   注意:    如遇到错误,字体都会变为红色!
@echo .
@echo                        ==============================
@echo                           【物联网移动终端烧录工具】
@echo                              当前支持型号:
@echo                        ==============================
@echo .
@echo 待烧写镜像所在目录      %~dp0

:start
ECHO .
ECHO ______________________
ECHO 步骤一:检测设备。。。
ECHO .
fastboot devices >%ADB_TMP_FILE%
@findstr "fastboot" %ADB_TMP_FILE%
IF %ERRORLEVEL% EQU 0 ( ECHO 设备----已连接 ) else ( echo 错误:请检查设备连接??? & goto failed_proc )
ECHO .
ECHO ______________________
ECHO 步骤二:烧录各分区镜像
ECHO .
REM 已烧写分区数统计
@set /a tatal=0

@fastboot flash modem NON-HLOS.bin>%CMD_TMP_FILE% 2>&1
	@findstr /I "finished" %CMD_TMP_FILE%
	IF %ERRORLEVEL% EQU 0 (echo modem--OK-- && set /a tatal+=1) else (echo modem----Faild---- && goto failed_proc)
REM ....
REM 忽略其他的语句
REM ....

REM 下面这2个没有分区表,Ignored
REM @fastboot flash PrimaryGPT gpt_main0.bin
REM @fastboot flash BackupGPT gpt_backup0.bin

ECHO .
ECHO ._______________Burned %tatal% images______________
ECHO .=======================OK=========================烧录完成!
ECHO .
goto end

REM 烧录过程出错,会以红色
:failed_proc
@color 0c
ECHO .
ECHO ._______________Burned %tatal% images______________
@echo.=======================FAILED=====================烧写过程出错!!!
ECHO .

:end
REM 删除临时产生的文件
del %ADB_TMP_FILE%
del %CMD_TMP_FILE%
pause



这个批处理中,需要先adb reboot bootloader让机器进入fastboot烧写模式,让后在运行这个脚本,一些注释(REM)也说明了。唯一要说的可能就是重定向了。我们知道标准输入、输出、错误用描述符0、1、2表示。默认的>即为1>,就是将标准输出定向到某个文件或设备。

fastboot devices >%ADB_TMP_FILE% 就是将命令的返回值重定向到文件中,好了问题下面出来了,

fastboot flash modem NON-HLOS.bin>%CMD_TMP_FILE% 这个命令输出不是返回值,而是烧写程序过程中的打印,检查%CMD_TMP_FILE%的内容是空的

fastboot flash modem NON-HLOS.bin>%CMD_TMP_FILE% 2>&1 后面加上2>&1就是解决问题了,这个烧写过程的打印都会重定向到指定的文件中去,这样我才能检测烧写过程有没有出错。




这个批处理感觉不方便,总不能去打开镜像目录(里面文件太多看了烦)再去找文件运行BURN_D500.CMD 吧,我们还是习惯把镜像放在一个目录或者映射的服务器盘上,然后把批处理放在桌面上,一键搞定。这个就涉及到批处理call批处理了。

贴上一键批处理文件:Call_Burn.cmd


@echo off
@title 运行脚本
REM 填入要烧写镜像所在目录
SET TARGET_DIR_PATH=XXXXXXXXXXX
REM 填入要运行的烧写脚本
SET CMD_NAME=BURN_D500.CMD

@ECHO 切换到fastboot模式。。。
@adb reboot bootloader


REM 延时5S预留机器重启时间,否则下面的烧写命令都失效
@ping 127.0.0.1 -n 6 >nul

PUSHD %TARGET_DIR_PATH%
@call %TARGET_DIR_PATH%\%CMD_NAME%
POPD


上面的延时是查询baidu的,网上说最好的方法是choice延时,但是我们当前的机器都cmd不支持choice命令,除非你去下载个choice.exe放到系统里。

PUSHD和POPD成对使用,用于调用其他批处理时用,为什么这么做,就是切换当前默认目录,比如A.cmd调用B.cmd,在B.cmd中访问当前目录下的c.txt,如果不用PUSHD和POPD,B.cmd运行时就会说找不到c.txt,因为它是到A.cmd所在目录下找了。

只要将上面提示的镜像目录中的XXXXXXXXXX改为你镜像的目录即可。这样机器上电,在干干净净的桌面上双击Call_Burn.cmd,等待重写、烧写一键完成,如果遇到出错,字体会变为红色的,如果一路绿色,就没问题,中间烧录过程有一个错误都会提示你。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值