我试图设置一个等于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
有人可以帮我弄清楚吗?
答案 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
如果变量为空或包含空格,如果没有引号,则会出现语法错误。