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

Cor*_*rey 3 windows batch command-line batch-file

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

123456789012345    device product:abc model:ABC device:abc transport_id:7
Run Code Online (Sandbox Code Playgroud)

我想从这个字符串中获取transport_id 7transport_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
Run Code Online (Sandbox Code Playgroud)

输出和错误:

Serial Number : 123456789012345
Transport Id  : transport_id:7
The system cannot find the file transport_id:7.
Run Code Online (Sandbox Code Playgroud)

此错误消息系统找不到文件 Transport_id:7是什么意思?

har*_*ymc 5

解决该问题的正确表述是:

for /f "tokens=2 delims=:" %%A in ("%%f") Do @Echo %%A
Run Code Online (Sandbox Code Playgroud)

如果没有双引号%%f,则将其视为文件名。双引号使其被视为字符串。