通过bat批处理命令进行adb push和adb pull批量拉取文件

通过bat批处理命令进行adb push和adb pull批量(通配符)拉取文件


代码环境:win10 powershell、adb设备


为了adb调试方便,花了一天时间简单入门了下bat批处理命令,写了两个比较简单的push和pull工具,做个记录。
adb push做的比较简单,adb pull可以用通配符拉取文件。

1、adb push

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

2、adb pull

做这个主要目的其实是批量导出设备的日志,但日志过多,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日,增加了导出模式的选择。

  • 17
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值