批处理运行机制
批处理读取命令按行读取,在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。在没有开启变量延迟的情况下,某条命令行中的变量改变要到下一行才会体现。
项目功能
周期性读取指定安卓设备的WiFi连接状态(开启或关闭),若判定为关闭状态,则通过命令开启。当然,仅循环一个开启命令也是可以的。
代码解析
@echo off |
- 使用
setlocal enabledelayedexpansion开启变量延迟,匹配!变量名!处理变量; - 通过
adb shell settings get global wifi_on命令获取WiFi状态:0为关闭,1为开启; - 将命令输出值赋给变量result,由于命令获取的值是会有变化的,需要使用
!result!而不是%result%,这样在循环时就不会先给该行变量赋值,而是在运行过程中(执行adb命令)给变量赋值; - 如果WiFi为关闭状态(即
!result!=0),通过adb shell svc wifi enable命令开启wifi。
相关知识
- 使用
setlocal disabledelayedexpansion语句关闭变量延迟 - 使用
for /f "delims=" %%i in ('command') do (echo %%i)语句,其中%%i为command的执行输出 - 批处理中的比较运算符如下:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于 - 要查询
if命令的用法,在命令行窗口输入help if或if /?即可,其他命令同理。