0
我正在使用FOR命令和AAPT命令从目录中的多个APK获取软件包名称。我正在使用单独的FOR命令和ADB命令来列出设备中的所有第三方安装的应用程序。Windows Batch/ADB - 检查多个设备的已安装应用程序
我已经能够交叉引用这些来获得我想要的单个设备的输出。我不确定如何重新排列脚本以管理多个设备,因为我收到错误。
我希望你能理解我想要达到的目标。请参阅我下面的尝试:
::Global
@echo off
set AAPT=tools\aapt.exe
set GREP=tools\grep.exe
set CUT=tools\cut.exe
:: Applications
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=1,2 skip=1" %%N IN ('adb devices') DO (
SET IS_DEV=%%O
if "!IS_DEV!" == "device" (
SET SERIAL=%%N
for /f "delims=" %%P in ('dir /b ^"APKs\*.apk^"') do (
SET APK=%%P
for /f "tokens=1 delims=" %%Q in ('%AAPT% d badging APKs\!APK! ^| !GREP! "package: name=" ^| !CUT! -d' -f2') do (
set package=%%Q
if "!package!" == "" set package=Unknown (
echo !package!>>"%userprofile%\desktop\PCAPPS.txt"
)
)
)
)
)
FOR /F "tokens=1,2 skip=1" %%R IN ('adb devices') DO (
if "!IS_DEV!" == "device" (
FOR /F "tokens=1 delims=" %%U IN ('adb shell "pm list packages -3" ^| !CUT! -f 2 -d ":"^') DO (
SET DEVPACKAGE=%%U
echo !DEVPACKAGE!>>"%userprofile%\desktop\DEVAPPS.txt"
)
)
)
)
)
FOR /f "tokens=*" %%a in ('FINDSTR /vlxg:"%userprofile%\desktop\DEVAPPS.txt" "%userprofile%\desktop\PCAPPS.txt"') DO (
set NOTDEVAPP=%%a
echo !SERIAL! does not have package !NOTDEVAPP! installed
)
del "%userprofile%\desktop\DEVAPPS.txt"
del "%userprofile%\desktop\PCAPPS.txt"
)
ENDLOCAL
@pause
这涉及到这样一个问题:Windows Batch/ADB - Check if installed .apk matches .apk from a directory
的可能的复制[Windows批处理/ ADB - 检查是否安装apk文件从一个目录的apk匹配](http://stackoverflow.com/questions/42815229/windows-batch-adb-check-if- installed-apk-matches-apk-from-a-directory) – aschipfl
请参阅问题底部的注释 – beecho01