This回答是我想要做的,但它适用于字符串 NOT 命令输出。
我的脚本是:
@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
但它显示了1个设备,而不是2个可用设备:
770a56
emulator-5554
Devices are: emulator-5554, , ,
Press any key to continue . . .
Windows的示例输出:
C:\Windows\Right\Console2>adb devices
List of devices attached
BH90W3T416 device
HSMPG9265D606183 device
emulator-5554 device
答案 0 :(得分:0)
...
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!
将使用前导逗号为每个dev
建立一个列表。
由于您没有向我们展示原始输入,也没有解释为什么要指定4个令牌但只显示一个令牌,因此您的问题不明确。如果%%a
是唯一感兴趣的标记,那么
...
set "dev4=!dev3!"
set "dev3=!dev2!"
set "dev2=!dev1!"
set "dev1=%%a"
...
可能更合适。
答案 1 :(得分:0)
为了存储多个值,当自己的变量中的每个值都预先知道时(如果有2个,为什么要使用4个变量)设备?),您需要使用array:
@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