zoukankan      html  css  js  c++  java
  • 几个批处理小脚本

    在做android测试的时候,有时候写几个简单的批处理,能够对工作有事半功倍之效。

    下面列举部分工作过程中遇到的命令,供有需要的朋友们参考。

    增加一个新的常用脚本:

    @echo off
    echo **********************************
    echo ***** 测试小工具---HaoChuang *****
    echo **********************************
    pause
    
    adb wait-for-device
    adb devices
    :start
    echo "根据需要输入对应ID(1:安装;2:卸载;3:截图;4:导出日志;0:退出)"
    
    set /p str=请选择输入数字:
    if %str% == 1 goto install_app else (
    if %str% == 2 goto uninstall_app else (
    if %str% == 3 goto screenshot else (
    if %str% == 4 goto export_log else (
    if %str% == 0 goto exit )))) else (
    (echo "你的输入有误!" && (goto start))
    rem pause
    
    set DIR=C:UsersHaochuangDesktop
    cd /d %DIR%
    
    :install_app
    adb install -r %DIR%hao*.apk
    echo "1.货主端App已安装!"
    adb install -r %DIR%	ruck*.apk
    echo "1.司机端App已安装!"
    
    :uninstall_app
    adb uninstall com.haochuang.test1;
    echo "1.XXX pp卸载完成!"
    adb uninstall com.haochuang.app2;
    echo "1.XXX App卸载完成!"
    
    :screenshot
    adb shell /system/bin/screencap -p /sdcard/screenshot.png
    echo "1.截图完成!"
    
    adb pull /sdcard/screenshot.png %DIR%
    echo "将截图复制到电脑盘中"
    
    :export_log
    adb logcat -v time > %DIR%	est.log
    
    :exit
    pause & exit
    
    rem ping 123.45.67.89 -n 1 -w 10000 > nul 
    rem echo "没有找到devices,请检查设备是否连接成功"
    rem pause & exit
    
    rem 截图
    rem adb shell /system/bin/screencap -p /sdcard/screenshot.png
    rem 将截图复制到电脑盘中
    rem adb pull /sdcard/screenshot.png E:download 

    1.安装:

    @echo off
    echo 等待设备连接
    adb wait-for-device
    echo **********************************
    set input=%1
    echo 已连接
    if "%input%" neq "" (
    echo 安装 %input%
    adb install -r %input%
    echo %1% 安装完毕
    ) else (
    for /r %%i in (*.apk) do (
    echo 安装 %%i
    adb install -r %%i
    echo  %%i 安装完毕
    )
    )
    pause

    2.卸载:

    @echo off
    echo **********************************
    echo current path: %cd%
    
    set HAO01=co.truckno1.cargo
    set HAO02=com.yihaohuoche.truck
    
    adb wait-for-device
    adb uninstall %HAO01%
    echo "uninstall Success!"
    adb uninstall %HAO02%
    echo "uninstall Success!"
    
    pause

    3.抓日志

    @echo off
    echo **********************************
    echo *****  Test Log---HaoChuang  *****
    echo **********************************
    
    echo current path: %cd%
    %cd%inadb.exe wait-for-device
    %cd%inadb.exe logcat -v time > %cd%files	est.log
    echo log export succ,path:
    echo %cd%files
    pause & exit

    4.截图

    @echo off
    echo **********************************
    echo *****  ScreenShot---HaoChuang  ***
    echo **********************************
    
    echo current path: %cd%
    %cd%inadb.exe wait-for-device
    %cd%inadb.exe shell /system/bin/screencap -p /sdcard/cargo_screenshot.png
    %cd%inadb.exe pull /sdcard/cargo_screenshot.png %cd%files
    echo "picture export succ,path:"
    echo %cd%files

    用adb获得手机里面某个apk的应用信息、版本信息

    adb shell dumpsys package com.examle.xx
    adb shell dumpsys 列出所有

    用adb启动apk

    adb shell am start -n haochuang.test/haochuang.test.TestActivity

    点火熄火等:

    @echo off
    adb wait-for-device
    adb devices
    :start
    echo "根据需要输入对应ID(1:点火;2:熄火;3:唤醒;4:初始化;0:退出)"
    
    set /p str=请选择输入数字:
    if %str% == 1 goto acc_on else (
    if %str% == 2 goto acc_off else (
    if %str% == 3 goto wake_up else (
    if %str% == 4 goto init else (
    if %str% == 0 goto exit )))) else (
    (echo "你的输入有误!" && (goto start))
    rem pause
    
    :acc_on
    adb shell am broadcast -a tsd.event.system.acc_on
    rem pause
    rem & exit
    goto start
    
    :acc_off
    adb shell am broadcast -a tsd.event.system.acc_off
    rem pause
    rem & exit
    goto start
    
    :wake_up
    adb shell am broadcast -a tsd.command.WAKE_UP
    rem pause
    rem & exit
    goto start
    
    :init
    adb shell am broadcast -a tsd.init.COMPLETE
    rem pause
    rem & exit
    goto start
    
    :exit
    pause & exit
    exit 0

    安装所有应用:

    @echo off
    echo 等待设备连接
    adb wait-for-device
    set input=%1
    echo 已连接
    if "%input%" neq "" (
    echo 安装 %input%
    adb install -r %input%
    echo %1% 安装完毕
    ) else (
    for /r %%i in (*.apk) do (
    echo 安装 %%i
    adb install -r %%i
    echo  %%i 安装完毕
    )
    )
    
    pause

    启动系统设置:

    @echo off
    adb wait-for-device
    adb shell am start com.android.settings/.Settings

    启动桌面应用:

    @echo off
    adb wait-for-device
    adb shell am start -a android.intent.action.MAIN  -c android.intent.category.HOME

    启动服务:

    @echo off
    :loop
    adb wait-for-device
    adb shell am startservice -a com.tuyou.tsd.cardvr.service.VideoRec
    ::ping 127.0.0.1 -n 10 > nul
    ::goto loop

    开始录制视频:

    @echo off
    adb wait-for-device
    adb shell am broadcast -a tsd.event.cardvr.start_record

    停止录制视频:

    @echo off
    adb wait-for-device
    adb shell am broadcast -a tsd.event.cardvr.stop_record

    auto test monkey:

    @set %repeat=0
    :BEGIN
    @set /a repeat=repeat+1
    @adb shell monkey --ignore-crashes --monitor-native-crashes -v 320000 > monkey_%repeat%.txt
    @ping -n 8 127.0>nul
    @adb reboot
    @ping -n 40 127.0>nul
    @goto BEGIN

    安装应用:

    @echo off
    echo ***********************************************
    echo ***** XXX设备端App安装工具---HaoChuang *****
    echo ***********************************************
    pause
    
    adb devices
    set DIR=E:AutoBuildVersion_20150817
    cd /d %DIR%
    G:
    
    adb install -r %DIR%TSD-Launcher*.apk
    echo "1.Launcher 已安装!"
    
    adb install -r  %DIR%TSD-SystemSetting*.apk
    echo "2.设置 已安装!"
    
    adb install  -r %DIR%TSD-VoiceAssistant*.apk
    echo "3.语音助手 已安装!"
    
    adb install  -r %DIR%TSD-Update*.apk
    echo "4.更新 已安装!"
    
    adb install  -r %DIR%TSD-CarDVR*.apk
    echo "5.行车记录 已安装!"
    
    adb install %DIR%TSD-Nav*.apk
    echo "6.导航 已安装!"
    
    adb install  -r %DIR%TSD-MUSIC*.apk
    echo "7.音频 已安装!"
    
    adb install  -r %DIR%TSD-Podcast*.apk
    echo "8.播客 已安装!"
    
    adb install -r  %DIR%TSD-News*.apk
    echo "9.新闻 已安装!"
    
    rem ping 123.45.67.89 -n 1 -w 10000 > nul 
    rem echo "没有找到devices,请检查设备是否连接成功"
    pause & exit

    卸载应用:

    @echo off
    echo ***********************************************
    echo ***** XXX设备端App卸载工具---HaoChuang *****
    echo ***********************************************
    pause

    adb uninstall com.test.hao;
    echo "1.Launcher 已卸载!"

    adb uninstall com.test.hao.settings;
    echo "2.设置 已卸载!"

    adb uninstall com.test.hao.voice;
    echo "3.语音助手 已卸载!"

    adb uninstall com.test.hao.updatesoft;
    echo "4.更新 已卸载!"

    adb uninstall com.test.hao.cardvr;
    echo "5.行车记录 已卸载!"

    adb uninstall com.test.hao.navigation;
    echo "6.导航 已卸载!"

    adb uninstall com.test.hao.audio;
    echo "7.音频 已卸载!"

    adb uninstall com.test.hao.podcast;
    echo "7.播客 已卸载!"

    adb uninstall com.test.hao.news;
    echo "7.新闻 已卸载!"

    rem ping 123.45.67.89 -n 1 -w 10000 > nul
    rem echo "没有找到devices,请检查设备是否连接成功"
    pause & exit

    在使用过程中,遇到可能需要点火熄火等操作,需要重复去敲adb shell命令,不如写成批处理,如下;

    @echo off
    adb wait-for-device
    adb devices
    :start
    echo # "根据需要输入对应ID(1:点火;2:熄火;3:唤醒;4:初始化;)"
    
    set /p str=请选择输入数字:
    if %str% == "1" goto acc_on
    if %str% == "2" goto acc_off
    if %str% == "3" goto wake_up
    if %str% == "4" goto init
    
    :acc_on
    echo "开始点火"
    adb shell am broadcast -a tsd.event.system.acc_on
    echo "点火完成"
    pause & exit
    
    :acc_off
    adb shell am broadcast -a tsd.command.WAKE_UP
    pause & exit
    
    :wake_up
    adb shell am broadcast -a tsd.command.WAKE_UP
    pause & exit
    
    :init
    adb shell am broadcast -a tsd.init.COMPLETE
    pause & exit
    
    exit 0

    截图:

    @echo off
    rem ok----------------
    adb shell /system/bin/screencap -p /sdcard/screenshot.png
    adb pull /sdcard/screenshot.png C:UsersHaoChuangDesktop
    rem ok----------------
    
    rem ================================
    rem adb shell /system/bin/screencap -p /sdcard/screenshot.png
    rem -------------1--------------
    rem 方法一:设置变量
    rem adb shell aa = date '+%m%d%H%M%S'
    rem adb shell mv /sdcard/screenshot.png /sdcard/screenshot_$aa.png
    rem -------------1--------------
    
    rem -------------2--------------
    rem 方法一:直接修改
    rem adb shell /system/bin/screencap -p /sdcard/screenshot.png
    rem adb shell mv /sdcard/screenshot.png /sdcard/screenshot_`date '+%m%d%H%M%S'`.png
    rem remn adb pull /sdcard/screenshot_`date '+%m%d%H%M'`*.png C:UsersHaoChuangDesktop
    rem -------------2--------------
    rem ================================

    如上,测试可用。

    附录:

    路径相关:参考:http://blog.csdn.net/mangmang2012/article/details/7048945

    1. .bat文件中获取bat文件所在目录的参数为 %~dp0
    
    %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录
    
    cd是转到这个目录,不过我觉得cd /d %~dp0还好些
    
    选项语法:
    
    ~0 -删除任何引号("),扩充%0
    
    %~f0 -将%0扩充到一个完全合格的路径名(“f”是file,即文件)
    
    %~d0 -仅将%0扩充到一个驱动器号
    
    %~p0 -仅将%0扩充到一个路径
    
    %~n0 -仅将%0扩充到一个文件名(“n”是name文件名)
    
    %~x0 -仅将%0扩充到一个文件扩展名
    
    %~s0 -扩充的路径只含有短名(“s”为Short,短的)
    
    %~a0 -将%0扩充到文件的文件属性(“a”为attribute,即属性)
    
    %~t0 -将%0扩充到文件的日期/时间(“t”time)
    
    %~z0 -将%0扩充到文件的大小(Size大小)
    
    %~$PATH:0 -查找列在路径环境变量的目录,并将%0扩充
    
    到找到的第一个完全合格的名称。如果环境变量名
    
    未被定义,或者没有找到文件,此组合键会扩充到
    
    空字符串
    
    可以组合修饰符来得到多重结果:
    
    %~dp0 -仅将%0扩充到一个驱动器号和路径
    
    %~nx0 -仅将%0扩充到一个文件名和扩展名
    
    %~fs0 -仅将%0扩充到一个带有短名的完整路径名
    
    %~dp$PATH:0 -查找列在路径环境变量的目录,并将%I扩充
    
    到找到的第一个驱动器号和路径。
    
    %~ftza0 -将%0扩充到类似输出线路的DIR
    
    %0为当前批处理文件
    
    如果0换成1为第一个文件,2为第2个
    
    ****************************************************
    
    %0代指批处理文件自身
    
    %~d0是指批处理所在的盘符
    
    %~dp0是盘符加路径
    
    cd %~dp0就是进入批处理所在目录
    
    
    2.添加永久环境变量
    
    用reg add 向HKLMsystemcontrolset001controlsession managerenvironment添加变量即可
    
    如:添加添加值为hedalixin变量NAME
    
    reg add "HKLMsystemcontrolsetcontrolsession managerenvironment" /v NAME /t REG_SZ /d hedalixin

     ×××××××××××××××××××××××

     杀进程类:

    #!/bin/bash
    PROID=`ps -fe|grep 包名|awk '{print $2}' | head -n 1`
    kill -9 $PROID

    两步操作:

    adb shell ps -fe|grep uiautomator
    获取到PID之后
    adb shell kill $PID$

    ×××××××××××××××××××××××××

    在控制台输入命令$adb shell pm

    可以看到adb shell pm的相关用法,详细信息请自己看输出

    要看一个apk文件的相关信息最简单实用的方法是:

    aapt dump badging [yourapp.apk]

    如果只是想查看手机上应用的packageName,则输入命令:

    adb shell pm list packages

    如果想知道应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

    adb shell pm list packages -f

    ×××××××××××××××××××××××××

    其他常见adb命令:http://www.cnblogs.com/SharkBin/p/3993231.html

    更多,待继续补充。

  • 相关阅读:
    又是一个递归的题
    全文检索引擎记录
    处理“System.Web.HttpException: 超过了最大请求长度”
    完整国内城市js级联选择
    多服务器共享session的解决方案之一
    递归求n的阶乘
    面试遇到了 <计算从1到N中1的出现次数>结果悲剧了.
    DropDownList绑定Xml数据的实现
    简单图片上传示例
    C#默认访问修饰符
  • 原文地址:https://www.cnblogs.com/haochuang/p/4766616.html
Copyright © 2011-2022 走看看