您的位置:首页 > 其它

bat 批处理 卸载三方APK

2016-12-07 21:55 381 查看
我用到的一些bat 命令以作备忘

//实现的功能是:分别输出不同的文件(规律)

一:输出日志

adb pull /sdcard/txz/log/text_all D:/log
rem for /l %%i in (1,1,10) do adb  pull /sdcard/txz/log/text_all_%%i D:/log

pause


rem 为批处理中的注释

for /l /f /r /d 分别对应着不同的含义来完成不同的操作

可以看一下for的介绍

二:为了解决空间不足的问题需要把我认为设备上无关的App卸载掉

setlocal enabledelayedexpansion rem  设置是否需要更新变量值
for /f  "tokens=1-3 delims=:" %%a in ('adb shell pm list package -3') do (

set dd=%%b
set "dd=!dd:~0,10!"
echo !dd!

rem set PARAM=%%b

rem set "PARAM=!PARAM:~0,10!" rem 注意这里为!!和这里是:~

rem echo  输出!PARAM!
rem 调用另一个文件 因为adb uninstall %%b 不可以执行,具体原因未知(还望高手赐教)
if not "!dd!" =="com.txznet" call uninstallAll.bat %%b
//if not "!dd!" =="com.txznet" call adb uninstall %%b 表示这么写又可以了
)

uninstallAll.bat
echo %1
adb uninstall %1
if errorlevel 0 echo 卸载成功


这里介绍一下:token意思是取第几个分割数据 1-3 的意思是:

分割1 分割2 分割3 分割4(只取1-3的数据)

delims 意思是根据什么进行分割(默认为空格):相当于java的split函数

bat的截取和替换的方式是:%VAR:~0,n%和%VAR:=0,n%

如上使用了截取来判断两个字符串是否相同

同时注意,如果你要改变局部变量的值:请加setlocal enabledelayedexpansion这一句并且相应的地方需要使用!VAR!来显示调用。

2016年12月30日18:21:34

三:功能:代码删除指定包名的进程

又一次使用bat脚本但是又遇到问题,并成功解决,特此感谢赵三元的指教

脚本代码如下

setlocal enabledelayedexpansion rem  设置是否需要更新变量值
for /f %%a in ('adb shell "ps|grep com.txznet.music|awk '{print $2}'"') do (set str=%%a
set c=!str:~0,5!
echo !c!
adb shell kill !c!
)
adb shell "ps|grep com.txznet.music|awk '{print $2}'"
pause


原因分析如下:

1.set复制不予许有空格否则失败:set a=bbb(对) set a = bbb (错,含有空格)

2.

adb shell "ps|grep com.txznet.music|awk '{print $2}'"


输出的结果结尾是\r\n,所以导致一开始adb shell kill !c!有问题



其中ODOA表示换行符Windows平台的换行符是CR+LF. 十六进制的ASCII值为0D0A.

0a——换行符号------”\n”

0d——回车符号------”\r”

四:使设备本身支持awk等命令

教程:使设备支持全linux命令

rem adb push busybox /system/xbin/
rem adb root
rem adb remount

rem adb shell "chmod  755 /system/xbin/busybox"
rem adb shell "/system/xbin/busybox --install ."

rem adb shell "awk"
rem adb shell "ps |grep com.txznet.music|awk '{print $2}' | head -n 1"


使用时,把注释去掉

五:call和start和goto区别

在同事的bat脚本中发现了自己还有不懂的脚本语句,特为添加

call:strstr "%%a" "Is a directory" 14

:strstr rem 和C语言里面的标签类似的效果
set str1=%~1
set str2=%~2
goto:eof rem 表示调用方法结束


goto 表示不执行goto之后的代码直接调用标签所在处的代码

call 表示执行标签所在处的代码之后回到call之后的代码

start 表示启动一个单独的窗口运行指定的程序或命令(不可以跳转到标签处执行)

(1) 运行 GOTO :EOF 后, CMD 返回并将等待下一条命令.

(2) 运行 EXIT 后, CMD 将直接关闭并返回到曾启动 cmd.exe 的程序或返回到”资源管理器”.

(3) 运行 EXIT /B 后, CMD 将直接关闭并返回到曾启动 cmd.exe 的程序或返回到”资源管理器”.

六:echo的使用

@echo off

1.echo前面加@与否。 作用:加@代表不显示当前行命令自身;否则反之。

2.echo.与echo本身之间没有区别

3.echo &pause 表示echo 执行之后的命令或程序,而非打印

DOS在运行批处理时,

会依次执行批处理中的每条命令,

并且会在显示器上显示,

如果你不想让它们显示,

可以加一个“echo off”

七:从bat脚本中获取用户输入的内容

rem /P 命令行开关允许将变量数值设成用户输入的一行输入
set /p var=
rem /A 命令行开关指定等号右边的字符串为被评估的数字表达式
set /a num+=1
rem 赋值语句的变量与=之间不允许有空格,否则不会赋值上去
set "赋值语句"
set 赋值语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bat