``` @echo off setlocal enabledelayedexpansion :main_menu cls echo ***************************************************************************** echo ** ** echo ** 注意:请将设备【WiFi打开】【蓝牙关闭】 ** echo ** 写号前将设备通过USB连接至电脑 ** echo ** ** echo ** 输入规则:按蓝牙Mac地址在前、WiFi Mac地址在后的顺序录入 ** echo ** 示例:aa bb cc dd ee ff gg hh ii jj kk ll ** echo ** ** echo ***************************************************************************** :: 获取用户输入并验证有效性 set /p mac_input="请输入蓝牙Mac地址和WiFi Mac地址 (共12组两位十六进制数): " call :validate_mac_input "%mac_input%" if errorlevel 1 ( echo 输入无效,请确保格式正确! pause goto main_menu ) :: 分割输入字符串到数组 set index=0 for %%i in (%mac_input%) do ( set "num[!index!]=%%i" set /a index+=1 ) :: 检查分割结果是否完整 if !index! LSS 12 ( echo 输入的数据不足12部分,请重新输入! pause goto main_menu ) :: 启动ADB命令序列 call :execute_adb_commands goto end_program :validate_mac_input :: 验证输入长度以及内容合法性 set input=%~1 if not defined input exit /b 1 set count=0 for %%i in (%input%) do ( set /a count+=1 ) if %count% neq 12 exit /b 1 exit /b 0 :execute_adb_commands :: ADB初始化步骤 echo 初始化ADB... adb root if errorlevel 1 ( echo 未找到任何设备! 等待3秒后重试... timeout /t 3 /nobreak >nul goto execute_adb_commands ) adb shell svc wifi enable adb shell svc bluetooth disable timeout /t 2 /nobreak > nul :: 写入蓝牙MAC地址 echo 写入蓝牙地址: %num[0]% %num[1]% ... %num[5]% adb shell wifitest -O adb shell wifitest -E 0x138 adb shell wifitest -e 0x138 -v 0x67 for /L %%i in (9,1,14) do ( adb shell wifitest -e 0x13%%i -v 0x!num[%%i-9]! ) :: 写入WiFi MAC地址 echo 写入WiFi地址: %num[6]% %num[7]% ... %num[11]% for /L %%i in (4,1,9) do ( if %%i leq 9 ( adb shell wifitest -e %%i -v 0x!num[%%i+2]! ) ) :: 最终重启设备 echo 设备正在重启... adb reboot pause exit /b :end_program endlocal```分割输入字符串到数组这部分代码需要改成分割字符串到数组并以0x形式保存
时间: 2025-05-08 20:18:59 浏览: 32
好的,以下是修改后的代码段,能够将用户输入的 MAC 地址分割成数组,并以 `0x` 形式保存。
### 修改说明
原代码直接将用户的输入存入数组中。现在我们增加处理逻辑,在存储到数组之前添加前缀 `0x`,使得每个值都成为形如 `0xaa` 的格式。
---
### 修改后的代码片段
```batch
:: 分割输入字符串到数组并转换为 0x 格式
set index=0
for %%i in (%mac_input%) do (
set "num[!index!]=0x%%i" :: 添加了 0x 前缀
set /a index+=1
)
```
完整的代码块如下:
```batch
:: 获取用户输入并验证有效性
set /p mac_input="请输入蓝牙Mac地址和WiFi Mac地址 (共12组两位十六进制数): "
call :validate_mac_input "%mac_input%"
if errorlevel 1 (
echo 输入无效,请确保格式正确!
pause
goto main_menu
)
:: 分割输入字符串到数组并转换为 0x 格式
set index=0
for %%i in (%mac_input%) do (
set "num[!index!]=0x%%i" :: 添加了 0x 前缀
set /a index+=1
)
:: 检查分割结果是否完整
if !index! LSS 12 (
echo 输入的数据不足12部分,请重新输入!
pause
goto main_menu
)
```
---
### 测试示例
假设用户输入的是:
`aa bb cc dd ee ff gg hh ii jj kk ll`
运行上述代码后,变量会被赋值为以下内容:
- `num[0] = 0xaa`
- `num[1] = 0xbb`
- ...
- `num[11] = 0,ll`
之后可以在后续命令中直接使用这些带 `0x` 前缀的值。
---
### 使用场景更新
例如在写入蓝牙 MAC 和 WiFi MAC 地址的部分可以直接引用这些新生成的值:
#### 蓝牙 MAC 写入示例
```batch
echo 写入蓝牙地址: %num[0]% %num[1]% ... %num[5]%
adb shell wifitest -O
adb shell wifitest -E 0x138
adb shell wifitest -e 0x138 -v 0x67
for /L %%i in (9,1,14) do (
adb shell wifitest -e 0x13%%i -v %num[%%i-9]%
)
```
#### WiFi MAC 写入示例
```batch
echo 写入WiFi地址: %num[6]% %num[7]% ... %num[11]%
for /L %%i in (4,1,9) do (
if %%i leq 9 (
adb shell wifitest -e %%i -v %num[%%i+2]%
)
)
```
---
阅读全文
相关推荐
















