提示用户选择设备(从线路)

时间:2018-03-27 22:48:28

标签: android batch-file windows-10 adb

我正在尝试列出已连接的adb设备,并提示用户选择要将APK部署到的行。

到目前为止,我已经尝试过:

for %%i in (adb devices) do (
    ECHO %%i
)

但这根本不起作用。有没有办法将每个adb设备的id捕获到变量中?我的目标是尽可能捕获每个id:

%line1=f2ea3410

从adb列出 adb设备

f2ea3410        device
f2fa3410        device

因此,我可以提示用户(而不是输入内容很难的ID):

@ECHO OFF
set /p id="Enter Line:"

1 个答案:

答案 0 :(得分:1)

我用您提供的示例对此进行了测试。只需修改this.api.userData() .scan((prev, current) => prev.push(current). []) .subscribe((data) => { this.concatenatedUserData = data; }); 即可使用可用的ID执行任何操作。

:DoIt

Adb.cmd,用于测试:

@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@rem @set prompt=$G

@set _command=adb.cmd
@set _count=0

@for /f "tokens=1,*" %%G in ('%_command% devices') do @call :AddAndDisplayDevice %%G "%%H"
@set /p _choice=Enter number from above menu:
@if not defined _%_choice% @goto :BadSelection "%_choice%"
@call :DoIt %_choice%
@exit /b 0

:AddAndDisplayDevice
@set /a _count+=1
@echo %_count%. %*
@call :SetVar %_count% %1
@call :SetVar %_count%_description %2
@exit /b 0

:BadSelection
@rem Up to you whether to loop back and try again.
@echo Bad choice: %_choice%
@exit /b -1

:DoIt
@set _Id=!_%1!
@rem set _
@echo User selected %1, device Id %_Id%.
@exit /b 0

:SetVar
@set _%1=%2
@exit /b 0