通过bat批处理命令进行adb push和adb pull批量(通配符)拉取文件
代码环境:win10 powershell、adb设备
为了adb调试方便,花了一天时间简单入门了下bat批处理命令,写了两个比较简单的push和pull工具,做个记录。
adb push做的比较简单,adb pull可以用通配符
拉取文件。
1、adb push
push比较简单,就是推送文件到adb设备的指定目录里,然后同步并重启,可以判断推送是否成功。
主要是当前工作环境比较常用,其他地方可以参考着灵活运用。
具体代码如下,复制保存为,就可以双击或在powershell下执行:
@echo off
setlocal enabledelayedexpansion
set key=error
for /f "delims=" %%i in ('adb -s ? push E:\ /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
2、adb pull
做这个主要目的其实是批量导出设备的日志,但日志过多,adb pull又不支持通配符,所以变相的做了一个,功能包括:
(1)自动在当前目录创建log文件夹,以便导出日志文件;
(2)即使电脑没配置adb,只要将adb程序放到当前目录的adb目录下,就可以实现自动配置环境变量来调用adb,不过这个是临时的环境变量,其他地方要直接用adb命令还是要去我的电脑配置下环境变量;
(3)支持通配符导出文件,比如2021-01-01_00*
,导出符合这个文件名的所有文件。
具体代码如下,保存为,直接双击,然后输入时间段,就可以导出到当前目录的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
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日,增加了导出模式的选择。