android - Gem flere tokens fra en kommando output ved hjælp af 'for/f'

Indlæg af Hanne Mølgaard Plasc

Problem



Dette svar er det, jeg vil gøre, men det virker for strenger IKKE kommando output.


Mit script er:


@echo off 
setlocal enabledelayedexpansion

for /F "skip=1 tokens=1,3,5,7" \%\%a in ('adb devices') do (
echo \%\%a

set dev1=\%\%a
set dev2=\%\%b
set dev3=\%\%c
set dev4=\%\%d
)
echo.
echo Devices are: !dev1!, !dev2!, !dev3!, !dev4!
pause


Men det viser 1 enhed, i stedet for de 2 tilgængelige:


770a56
emulator-5554

Devices are: emulator-5554, , ,
Press any key to continue . . .


Prøveudgang fra Windows:


C:WindowsRightConsole2>adb devices
List of devices attached
BH90W3T416      device
HSMPG9265D606183        device
emulator-5554   device

Bedste reference


For at gemme flere værdier , hver i sin egen variabel , når et sådant nummer ikke er kendt på forhånd (hvorfor bruger du 4 variabler, hvis der er 2 enheder?) , du skal bruge en matrix:


@echo off 
setlocal enabledelayedexpansion

set n=0
for /F "skip=1" \%\%a in ('adb devices') do (
   echo \%\%a

   set /A n+=1
   set dev!n!=\%\%a
)
echo/
echo Devices are: 
for /L \%\%i in (1,1,\%n\%) do echo !dev\%\%i!
pause

Andre referencer 1


...
set dev1=!dev1!,\%\%a
set dev2=!dev2!,\%\%b
set dev3=!dev3!,\%\%c
set dev4=!dev4!,\%\%d
...
echo Devices are: !dev1:~1!, !dev2:~1!, !dev3:~1!, !dev4:~1!


som vil oprette en liste for hver dev med et ledende komma.


Da du ikke viser os rå input og ikke forklarer hvorfor du specificerer 4 tokens, men kun viser en, er dit spørgsmål uklart. Hvis \%\%a er det eneste token af ​​interesse, så


...
set "dev4=!dev3!"
set "dev3=!dev2!"
set "dev2=!dev1!"
set "dev1=\%\%a"
...


kan være mere egnet.