赞
踩
代码环境:win10 powershell、adb设备
为了adb调试方便,花了一天时间简单入门了下bat批处理命令,写了两个比较简单的push和pull工具,做个记录。
adb push做的比较简单,adb pull可以用通配符拉取文件。
push比较简单,就是推送文件到adb设备的指定目录里,然后同步并重启,可以判断推送是否成功。
主要是当前工作环境比较常用,其他地方可以参考着灵活运用。
具体代码如下,复制保存为push.bat,就可以双击或在powershell下执行:
@echo off setlocal enabledelayedexpansion set key=error for /f "delims=" %%i in ('adb -s ? push E:\app.exe /mnt/app/') do ( set output=%%i echo !output! echo !output!|findstr "!key!" >nul && ( echo= echo= echo -----------error----------- echo ------file push failed----- echo= echo= ) || ( echo file push succ adb shell sync adb shell reboot timeout 8 cls ) ) endlocal
做这个主要目的其实是批量导出设备的日志,但日志过多,adb pull又不支持通配符,所以变相的做了一个,功能包括:
(1)自动在当前目录创建log文件夹,以便导出日志文件;
(2)即使电脑没配置adb,只要将adb程序放到当前目录的adb目录下,就可以实现自动配置环境变量来调用adb,不过这个是临时的环境变量,其他地方要直接用adb命令还是要去我的电脑配置下环境变量;
(3)支持通配符导出文件,比如2021-01-01_00*,导出符合这个文件名的所有文件。
具体代码如下,保存为pull.bat,直接双击,然后输入时间段,就可以导出到当前目录的log文件夹,可以根据自己需要修改内容以达到自己的目:
@echo off setlocal enabledelayedexpansion :choose_mode echo Please choose export mode: echo 1:Current hour period log files(like "12:00:00~12:59:00"); echo 2:Today's logs files; echo 3:This month's log files; echo 4:All log files; echo 5:Specified log files; echo= set /p mode=: if %mode% == 1 ( echo export the past hour log files... set logfile=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%* ) else if %mode% == 2 ( echo export today's log files... set logfile=%date:~0,4%-%date:~5,2%-%date:~8,2%* ) else if %mode% == 3 ( echo export this month's log files... set logfile=%date:~0,4%-%date:~5,2%* ) else if %mode% == 4 ( echo export all log files... set logfile=* ) else if %mode% == 5 ( echo export specified log file... echo= echo usage: echo 1.export single file, then input: echo= echo 2022-01-01_00-00-00.log echo= echo 2.export files at specified time, then input: echo= echo 2022-01-01* or 2021-01-01_00* echo= set /p logfile=please input log name: ) else ( echo invalid parameter goto choose_mode ) echo start export file from adb device echo= set export_path=%~dp0log if exist %export_path% ( echo no need mkdir ) else ( echo mkdir %export_path% md log ) set PATH=%~dp0adb for /F "tokens=* USEBACKQ" %%F in (`adb shell find /mnt/sdisk/dvrlog_s/log_%logfile%`) do ( set files=%%F echo export file: !files! echo export path: !export_path! echo= ::~0,-1 表示截取第一个到倒数第一个字符的字符(截取从哪里到哪里的字符) adb pull !files:~0,-1! !export_path! echo= echo= echo= echo= echo= ) echo Export completed, log folder: %export_path% echo= echo= echo= :end endlocal pause ::更新记录 ::2021年2月24日,创建第一个版本。 ::2022年4月13日,增加了导出模式的选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。