adb批处理显示Logcat
主要解决有时候手动输入的麻烦。支持自定义adb目录。支持同时连接多个设备可以正常显示日志。支持中文无乱码。可以指定包名。
源码如下:
@echo off
::中文支持
chcp 65001
::设置adb路径
cd c:
cd %UserProfile%\AppData\Local\Android\Sdk\platform-tools
cls
echo 【安卓adb日志显示 ——雨季1.0】
echo --------------------------------------------------------------------------
echo - 功能:中文显示Logcat日志。 -
echo - 日志级别优先级是下面的字符,顺序是从低到高,默认为D -
echo - V — 明细 verbose(最低优先级) -
echo - D — 调试 debug -
echo - I — 信息 info -
echo - W — 警告 warn -
echo - E — 错误 error -
echo - F — 严重错误 fatal -
echo - S — 无记载 silent -
echo - 【注】连接多个设备时,默认打印第一个设备日志 -
echo --------------------------------------------------------------------------
set /p input=请输入打印日志的包名(输入空则打印全部日志):
::创建读取设备名称的文件
echo @echo off>>%~dp0getDevices.bat
echo adb devices>>%~dp0getDevices.bat
::读取设备名称
for /f "tokens=1 delims=device" %%i in ('%~dp0getDevices.bat') do set device=%%i
echo 连接名称为:[%device%]
::删除该文件
Del /F /A /Q %~dp0getDevices.bat
if "%input%"=="" (
call goto showAll
) else (
call goto show
)
:show
::创建读取Pid的文件
echo @echo off>>%~dp0getpid.bat
echo adb -s %device% shell "ps | grep %input%">>%~dp0getpid.bat
echo 执行命令:"adb -s %device% shell 'ps | grep %input%'"
::读取PID
for /f "tokens=2 delims= " %%i in ('%~dp0getpid.bat') do set pid=%%i
::去掉右边空格
:intercept_right2
if "%pid:~-1%"==" " set "pid=%pid:~0,-1%"&goto intercept_right2
echo pid为:[%pid%]
::删除该文件
Del /F /A /Q %~dp0getpid.bat
echo 执行命令:"adb -s %device% logcat *:D | find '%pid%'"
adb -s %device% logcat *:D | find "%pid%"
goto end
:showAll
adb -s %device% logcat
goto end
:end
新建文件,复制粘贴内容 保存为.bat即可。
如果设备连接的远程adb,执行这个批处理,电脑点都不占用资源,不占用USB,岂不是美滋滋。
欢迎大家提出修改意见。