Androidデバイスが複数あるとadb devices -lの後に番号を指定しなければならないため作成した。
下記は:の後を取得するようにした。
@echo off
setlocal enabledelayedexpansion
REM adb devicesコマンドを実行してデバイス番号を取得
for /f "tokens=1,2" %%i in ('adb devices -l') do (
REM デバイスのシリアル番号は2列目(statusが"device"の行)にある
if "%%j"=="device" (
set DEVICE_ID=%%i
REM コロンの位置を探して、それ以降の文字を抽出する
for /l %%x in (0,1,255) do (
set CHAR=!DEVICE_ID:~%%x,1!
if "!CHAR!"=="^:" (
set AFTER_COLON=!DEVICE_ID:~%%x+1!
goto :FOUND
)
)
)
)
:FOUND
REM コロン以降の文字列を表示(デバッグ用)
echo String after colon: %AFTER_COLON%
REM 続けて処理を行う
pause
adb devices -l でデバイス番号だけ取得したい時はこちら
@echo off
setlocal enabledelayedexpansion
:: adb devices -l の出力を変数に読み込む
for /f "tokens=1,2 delims=:" %%a in ('adb devices -l') do (
if "%%a"=="usb" (
set device_number=%%b
echo デバイス番号: !device_number!
)
)
:: 最後に変数 device_number を出力
echo 取得されたデバイス番号は: !device_number!
pause
ループさせる
@echo off
setlocal enabledelayedexpansion
rem aDBコマンドの結果を取得
for /f "tokens=* delims=" %%a in ('aDB') do (
set "output=%%a"
)
rem カウント用の変数
set count=0
rem forループで区切り文字を ":" に設定し、4回目以降のトークンを取得
for /f "tokens=1,2,3,4,5 delims=:" %%a in ("%output%") do (
set /a count+=1
if !count! equ 5 (
set result=%%a
)
)
rem 結果を表示
echo Result: %result%
@echo off
setlocal enabledelayedexpansion
REM コマンドの結果を一時ファイルに出力
your_command > temp.txt
REM 結果を読み込んで最後の「:」以降の数字を抽出
set lastNumber=
for /f "tokens=* delims=" %%a in (temp.txt) do (
set line=%%a
for /f "tokens=1,* delims=:" %%b in ("!line!") do (
set lastNumber=%%c
)
)
REM 抽出した数字を表示
echo 最後の:以降の数字は: %lastNumber%
REM 一時ファイルの削除
del temp.txt