【问题标题】:Save multiple tokens from a command output using "for /f"使用“for /f”从命令输出中保存多个标记
【发布时间】:2017-04-16 00:19:30
【问题描述】:

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

【问题讨论】:

  • 你能显示adb devices的示例输出吗?
  • LotPings 加了一个,谢谢大家。

标签: android windows batch-file


【解决方案1】:

为了存储几个值,每一个在自己的变量中当这样一个数字事先不知道的时候(如果有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

【讨论】:

  • 知道任何有助于处理批处理文件的书籍(不是网站)吗?
【解决方案2】:
...
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"
...

可能更合适。

【讨论】:

  • 我编辑了问题中的 raw 命令输出以进行澄清。从您的第一个代码中获取提示,我可以这样做:set devices=!devices!,%%a 然后用逗号分割设备字符串并像here 一样解析它们,谢谢它有效。奇怪的是,您的代码的第二部分截断了每个设备的第一个字母,但现在这不是问题。
猜你喜欢
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
相关资源
最近更新 更多