我发送adb shell dumpsys wifi
以获取当前可用的wifi ap BSSID(MAC地址)。结果如下:
最新扫描结果:
BSSID Frequency RSSI Age SSID Flags
7c:7d:3d:c3:4c:e0 2422 -40 6.716 HUAWEI-YJDAD5 [WPA2-PSK-CCMP][ESS]
d4:ee:07:26:24:18 2432 -50 6.716 HiWiFi_Refine [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]
24:09:95:55:54:20 2442 -52 6.716 HUAWEI-5420 [WPA2-PSK-CCMP][WPS][ESS]
70:72:3c:97:52:b8 2437 -53 6.716 HUAWEI-H6FCXT [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]
0c:d6:bd:3d:f6:14 2417 -52 6.716 HUAWEI-DUS8FG [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]
f0:b4:29:20:21:1b 2442 -54 6.716 Xiaomi_211A11 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]
80:38:bc:05:ed:a1 2412 -58 6.716 Huawei-Employee [WPA2-EAP-CCMP][ESS]
e0:19:1d:cc:7c:a4 2412 -57 6.715 HUAWEI-B83GL6 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]
18:c5:8a:17:4b:a1 2412 -60 6.715 Huawei-Employee [WPA2-EAP-CCMP][ESS]
那么如何在Windows上使用findstr Regular Expression从结果中收集BSSID?我试过adb shell dumpsys wifi | findstr /r "[0-9a-f]{2}(:[0-9a-f]{2}){5}"
但没有得到任何东西
答案 0 :(得分:1)
findstr 的正则表达式支持是有限的,不支持Perl解释器中的正则表达式实现的所有功能,或Boost库中的正则表达式类,或JavaScript RegExp对象支持的功能。它们都支持Perl语法中的正则表达式,但它们的实现和功能是不同的。在命令提示符窗口findstr /?
中运行以显示此控制台应用程序的帮助以及 findstr 支持哪些正则表达式。
但 findstr 旨在输出包含找到的字符串的行,而不仅仅是找到的字符串。在文件中非正则表达式搜索只输出找到的字符串没有多大意义,因为它将等于搜索字符串,可能除了使用选项/I
和搜索字符串的情况之外包含字母。
因此我建议使用命令 FOR 来获取写入文本文件的MAC地址。
@echo off
rem Delete a perhaps already existing output file.
if exist MacAddress.txt del MacAddress.txt
rem Run command to get WiFi data, skip the first line of output, and
rem write to output file just the first data column with the MAC addresses.
for /F "skip=1" %%I in ('adb.exe shell dumpsys wifi') do echo %%I>>MacAddress.txt
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
del /?
echo /?
for /?
if /?
有关>>
的解释,请参阅Microsoft文章Using command redirection operators。