可以将adb命令批量设置为变量吗?

时间:2019-12-11 19:01:17

标签: android batch-file adb

我试图设置一个等于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 个答案:

答案 0 :(得分:2)

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
如果变量为空或包含空格,如果没有引号,则会出现语法错误。

相关问题