0
FORコマンドとAAPTコマンドを使用して、ディレクトリ内のいくつかのAPKからパッケージ名を取得しています。別のFORコマンドとADBコマンドを使用して、デバイスからインストールされているサードパーティ製のアプリケーションをすべて一覧表示しています。Windowsバッチ/ 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