返回列表 发帖
是要查找没有备份的包名吗

TOP

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

TOP

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

TOP

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

TOP

13行以下是过滤条件,可以灵活组合
@echo off
setlocal enabledelayedexpansion
REM 记录已备份的apk
for /f "tokens=3 delims=_" %%i in ('dir /b .\bak\*.apk') do set "#%%~ni=已备份#未安装"
REM 记录已安装的apk
for /f "tokens=2 delims=:" %%i in ('adb shell pm list package -3') do (
if "!#%%i!"=="" (
set "#%%i=未备份#已安装"
) else (
set "#%%i=已备份#已安装"
)
)
REM 过滤
echo 未安装:
for /f "delims=#=" %%i in ('set # ^| findstr "未安装"') do echo %%i
echo ------------------------
echo 未备份:
for /f "delims=#=" %%i in ('set # ^| findstr "未备份"') do echo %%i
echo ------------------------
echo 已安装:
for /f "delims=#=" %%i in ('set # ^| findstr "已安装"') do echo %%i
echo ------------------------
echo 已备份:
for /f "delims=#=" %%i in ('set # ^| findstr "已备份"') do echo %%i
echo ------------------------
pause&exitCOPY
1

评分人数

TOP

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

评分人数

TOP

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

TOP

回复 31# hentai87

for 中可以给变量添加很多你需要的附加参数,用#分隔
我帮你添加了本地文件路径和远程apk路径,其它的你自由发挥
@echo off
setlocal enabledelayedexpansion
REM 记录已备份的apk
for /f "tokens=1,2* delims=_" %%i in ('dir /b .\bak\*_*_*.apk') do set "#%%~nk=已备份#未安装#%%i_%%j_%%k"
REM 记录已安装的apk
for /f "tokens=1-3* delims=:=" %%i in ('adb shell pm list packages -f -a') do (
if "%%l"=="" (
if "!#%%k!"=="" (
set "#%%k=未备份#已安装#_#%%j"
) else (
set "#%%i=已备份#已安装!#%%k:~7!#%%j"
)
) else (
if "!#%%l!"=="" (
set "#%%l=未备份#已安装#_#%%j==%%k"
) else (
set "#%%i=已备份#已安装!#%%l:~7!#%%j==%%k"
)
)
)
REM 过滤
echo 已备份#未安装:
echo.
for /f "tokens=1-3* delims=#" %%i in ('set # ^| findstr "已备份#未安装"') do (
set "pkgName=%%i"
echo 包名: !pkgName:~0,-4!
echo 文件: .\bak\%%k
echo.
)
echo -----------------------------------------------------
echo 未备份#已安装:
echo.
for /f "tokens=1-3* delims=#" %%i in ('set # ^| findstr "未备份#已安装"') do (
set "pkgName=%%i"
echo 包名: !pkgName:~0,-4!
echo 路径: %%l
echo.
)
echo -----------------------------------------------------
pause&exitCOPY

TOP

返回列表