web-dev-qa-db-ja.com

バッチでコロンで変数を分割する方法は?

adb devices -lから情報を抽出するためにバッチを使用していますが、このコマンドは次のようなメッセージを表示します。

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

この文字列transport_id:7から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を見つけることができませんはどういう意味ですか?

2
Corey

問題を解決するための正しい定式化は次のとおりです。

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

%%fを二重引用符で囲まない場合、ファイル名と見なされます。二重引用符を使用すると、文字列として扱われます。

3
harrymc