如何在批处理中用冒号拆分变量?

如何在批处理中用冒号拆分变量?

我正在使用批处理从中提取信息adb devices -l,此命令显示如下消息:

123456789012345    device product:abc model:ABC device:abc transport_id:7

我想获得 transport_id7从这个字符串中transport_id:7,所以我首先尝试用空格分割消息,并且它工作正常。但是在尝试用冒号分隔,我收到错误说系统找不到文件transport_id:7。 我究竟做错了什么 ?

这是我的代码。

@ECHO off
for /f "tokens=1,2,3,4,5,6" %%a in ('adb.exe devices -l') do (
    if "%%b" == "device" ( 
        ECHO Serial Number : %%a
        ECHO Transport Id  : %%f
        for /f "tokens=2 delims=:" %%A in ( %%f ) Do @Echo %%A
        call test.bat %%A
    )
)
PAUSE

输出和错误:

Serial Number : 123456789012345
Transport Id  : transport_id:7
The system cannot find the file transport_id:7.

此错误信息是什么系统找不到文件transport_id:7方法 ?

答案1

解决这个问题的正确表述是:

for /f "tokens=2 delims=:" %%A in ("%%f") Do @Echo %%A

如果不使用双引号%%f,则会将其视为文件名。如果使用双引号,则会将其视为字符串。

相关内容