在http://blog.youkuaiyun.com/chenghai2011/article/details/7332579文章里面,我介绍了可以通过adb am start来启动android应用,但android里面并没有提供命令来结束应用。android采用的linux内核,因此可以用kill命令来结束进程,但kill命令只支持用进程pid来干掉进程,因此我写了一个bat来便于结束android应用。
- @echo off
- setlocal
- for /f "tokens=1,2,3,4,5,6,7,8,9" %%i in ('adb.exe shell ps app') do (
- set str=%%q
- setlocal enabledelayedexpansion
- set appName=!str:~0,-1!
- REM echo !appName!
- if "!appName!"=="%1" (
- @echo begin to kill !appName!,pid:%%j
- call adb.exe shell kill -9 %%j
- )
- )
- endlocal
你将上面的脚本保存为adbKill.bat,以后要干掉应用,执行adbKill 应用名就可以了,例如adbKill com.android.email。
稍微解释一下上面的bat脚本:
1.用adb.exe shell ps app而不用adb.exe shell ps是因为我只需要kill掉android应用,所有我用app来过滤到一些进程。
2. set appName=!str:~0,-1!是因为adb.exe shell ps输出的没一行后面都有一个0x0d字符,所以需要将这个字符去掉。set appName=!str:~0,-1!的意思是bat里面取子字符串的语句,用!符号而不是%符号是因为for循环里面如果不开启delayedexpansion执行set是无效的。