2016-01-21 235 views
1

我送adb shell dumpsys wifi获得当前可用WiFi AP间BSSID(MAC地址)。结果如下: 最新的扫描结果:如何使用findstr获取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] 

那么如何FINDSTR则表达式中使用Windows上从结果集BSSID?我试图adb shell dumpsys wifi | findstr /r "[0-9a-f]{2}(:[0-9a-f]{2}){5}"FINDSTR是有限的,不支持Perl解释器的正则表达式执行,或在Boost库正则表达式类,或者是什么的JavaScript RegExp对象支持的所有特性得到什么

+0

尝试这个正则表达式:'(([[0-9A-Fa-f] {2}([:] | $)){6})' – harry

+0

@ Haralambi Todorov我试过了,但仍然没有任何回报 –

回答

1

正则表达式的支持。它们都支持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>>解释。