[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
是要查找没有备份的包名吗

TOP

可以用dump来查看是否安装了相应的包名
你要在文件名中把包名截取出来
  1. adb shell pm dump com.tencent.mm | findstr /i /C:"Unable to find package" && ( echo 未安装 ) || ( echo 已安装 )
复制代码

TOP

能否看下你的apk文件命名方式
如果能取出包名,两个for就可以解决

TOP

回复 19# hentai87
不是,可以设置变量,执行一次adb shell pm list package -3就行了

TOP

13行以下是过滤条件,可以灵活组合
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 记录已备份的apk
  4. for /f "tokens=3 delims=_" %%i in ('dir /b .\bak\*.apk') do set "#%%~ni=已备份#未安装"
  5. REM 记录已安装的apk
  6. for /f "tokens=2 delims=:" %%i in ('adb shell pm list package -3') do (
  7. if "!#%%i!"=="" (
  8. set "#%%i=未备份#已安装"
  9. ) else (
  10. set "#%%i=已备份#已安装"
  11. )
  12. )
  13. REM 过滤
  14. echo 未安装:
  15. for /f "delims=#=" %%i in ('set # ^| findstr "未安装"') do echo %%i
  16. echo ------------------------
  17. echo 未备份:
  18. for /f "delims=#=" %%i in ('set # ^| findstr "未备份"') do echo %%i
  19. echo ------------------------
  20. echo 已安装:
  21. for /f "delims=#=" %%i in ('set # ^| findstr "已安装"') do echo %%i
  22. echo ------------------------
  23. echo 已备份:
  24. for /f "delims=#=" %%i in ('set # ^| findstr "已备份"') do echo %%i
  25. echo ------------------------
  26. pause&exit
复制代码
1

评分人数

TOP

回复 25# hentai87
怎么无解了,for你没用熟把
第4行改为
  1. for /f "tokens=1,2* delims=_" %%i in ('dir /b .\bak\*.apk') do set "#%%~nk=已备份#未安装"
复制代码
1

评分人数

TOP

*表示第二段后面的所有字符,包含分隔符在内的

TOP

回复 31# hentai87

for 中可以给变量添加很多你需要的附加参数,用#分隔
我帮你添加了本地文件路径和远程apk路径,其它的你自由发挥
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 记录已备份的apk
  4. for /f "tokens=1,2* delims=_" %%i in ('dir /b .\bak\*_*_*.apk') do set "#%%~nk=已备份#未安装#%%i_%%j_%%k"
  5. REM 记录已安装的apk
  6. for /f "tokens=1-3* delims=:=" %%i in ('adb shell pm list packages -f -a') do (
  7. if "%%l"=="" (
  8. if "!#%%k!"=="" (
  9. set "#%%k=未备份#已安装#_#%%j"
  10. ) else (
  11. set "#%%i=已备份#已安装!#%%k:~7!#%%j"
  12. )
  13. ) else (
  14. if "!#%%l!"=="" (
  15. set "#%%l=未备份#已安装#_#%%j==%%k"
  16. ) else (
  17. set "#%%i=已备份#已安装!#%%l:~7!#%%j==%%k"
  18. )
  19. )
  20. )
  21. REM 过滤
  22. echo 已备份#未安装:
  23. echo.
  24. for /f "tokens=1-3* delims=#" %%i in ('set # ^| findstr "已备份#未安装"') do (
  25. set "pkgName=%%i"
  26. echo 包名: !pkgName:~0,-4!
  27. echo 文件: .\bak\%%k
  28. echo.
  29. )
  30. echo -----------------------------------------------------
  31. echo 未备份#已安装:
  32. echo.
  33. for /f "tokens=1-3* delims=#" %%i in ('set # ^| findstr "未备份#已安装"') do (
  34. set "pkgName=%%i"
  35. echo 包名: !pkgName:~0,-4!
  36. echo 路径: %%l
  37. echo.
  38. )
  39. echo -----------------------------------------------------
  40. pause&exit
复制代码

TOP

返回列表