Можно ли установить команду adb в качестве переменной в пакетном режиме? - PullRequest
0 голосов
/ 11 декабря 2019

Я пытался установить переменную, равную команде adb, но она не работает, вот код

set ten=10
set nine=9
set eight_1=8.1
set eight=8
set seven=7
set version = "adb shell getprop ro.build.version.release"
if %ten% == %version% goto :menu
if %nine% == %version% goto :menu
if %eight_1% == %version% goto :menu
if %eight% == %version% goto :menu
if %seven% == %version% goto :menu 

Может кто-нибудь помочь мне разобраться?

1 Ответ

2 голосов
/ 11 декабря 2019

cmd очень просто. Команда set просто устанавливает переменную в строку. Есть два способа перехватить вывод команды в переменную. Один включает временный файл. Записать вывод в файл и перечитать его:

adb shell getprop ro.build.version.release >file.tmp
<file.tmp set /p "var="
echo %var%

Другой выглядит немного сложнее (вы привыкнете к нему) и не использует файл:

for /f "delims=" %%a in ('adb shell getprop ro.build.version.release') do set "var=%%a"
echo %var%

Обе версии полагаются на вывод команды только в одну строку (хотя обе могут быть расширены для итерации по нескольким строкам).

Примечания:
Не ставьте пробелы вокруг = с помощьюкоманда set - они становятся частью имени переменной соответственно значения.

Для лучшей практики используйте синтаксис set "var=value" (обратите внимание, где указаны кавычки). Он предотвращает появление паразитных пробелов (трудно обнаружить при устранении неполадок) и сохраняет против некоторых «ядовитых символов»

По аналогичным причинам используйте следующий синтаксис if: if "%ten%" == "%version%" goto :menu
Если переменная будет пустойили содержать пробелы, без кавычек вы получите синтаксическую ошибку.

...