如何使用 findstr 获取 MAC 地址?
How to use findstr to get MAC address?
我发送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正则表达式从结果中收集BSSID呢?我尝试了 adb shell dumpsys wifi | findstr /r "[0-9a-f]{2}(:[0-9a-f]{2}){5}"
但一无所获
findstr 对正则表达式的支持是有限的,不支持 Perl 解释器中正则表达式实现的所有特性,或者 Boost 库中的正则表达式 class,或者JavaScript RegExp 对象支持什么。它们都支持 Perl 语法中的正则表达式,但它们的实现和特性不同。 运行 在命令提示符 window findstr /?
中获取此控制台应用程序的显示帮助以及 findstr.[=19= 支持哪些正则表达式]
但是 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
要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
del /?
echo /?
for /?
if /?
另请参阅 Microsoft 文章 Using command redirection operators,了解 >>
的解释。
我发送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正则表达式从结果中收集BSSID呢?我尝试了 adb shell dumpsys wifi | findstr /r "[0-9a-f]{2}(:[0-9a-f]{2}){5}"
但一无所获
findstr 对正则表达式的支持是有限的,不支持 Perl 解释器中正则表达式实现的所有特性,或者 Boost 库中的正则表达式 class,或者JavaScript RegExp 对象支持什么。它们都支持 Perl 语法中的正则表达式,但它们的实现和特性不同。 运行 在命令提示符 window findstr /?
中获取此控制台应用程序的显示帮助以及 findstr.[=19= 支持哪些正则表达式]
但是 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
要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
del /?
echo /?
for /?
if /?
另请参阅 Microsoft 文章 Using command redirection operators,了解 >>
的解释。