Android 提示用户选择设备(从第行)

Android 提示用户选择设备(从第行),android,batch-file,windows-10,adb,Android,Batch File,Windows 10,Adb,我试图列出已连接的adb设备,并提示用户选择要部署APK的线路 到目前为止,我已经尝试: for %%i in (adb devices) do ( ECHO %%i ) 但这根本行不通。有没有办法将每个adb设备的id捕获到变量中?如果可能,我的目标是捕获每个id,如: %line1=f2ea3410 从列出adb设备的adb: 因此,我可以向用户提示行(而不是难以键入的id): 我用您提供的示例对此进行了测试。只需修改:DoIt,即可使用可用Id执行任何操作 @setlocal

我试图列出已连接的adb设备,并提示用户选择要部署APK的线路

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

for %%i in (adb devices) do (
    ECHO %%i
)
但这根本行不通。有没有办法将每个adb设备的id捕获到变量中?如果可能,我的目标是捕获每个id,如:

%line1=f2ea3410
从列出adb设备的adb:

因此,我可以向用户提示(而不是难以键入的id):


我用您提供的示例对此进行了测试。只需修改
:DoIt
,即可使用可用Id执行任何操作

@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
Adb.cmd,用于测试:

@echo f2ea3410        device
@echo f2fa3410        device

您使用的是哪个版本的
MS-DOS
?@Compo-standard-DOS提示符来自windows 10 windows中没有一个版本的DOS,已经超过我记忆中的时间了!没有一个命令,
cmd.exe
经常使用术语
命令提示符
。您可以使用
FOR
命令和
/F
选项来捕获命令的输出。
@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
@echo f2ea3410        device
@echo f2fa3410        device