2016-01-21 3 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 Regular Expression на Windows, чтобы собрать BSSID из результата? Я попытался adb shell dumpsys wifi | findstr /r "[0-9a-f]{2}(:[0-9a-f]{2}){5}", но ничего не получить

+0

Попробуйте это регулярное выражение: '(([0-9A-Fa-f] {2} ([:] | $)) {6})' – harry

+0

@ Хараламби Тодоров Я пробовал, но все равно ничего не получаю –

ответ

1

поддержка регулярных выражений по Findstr ограничено и не поддерживает все возможности регулярного внедрения выражения интерпретатора Perl, или обычный класс выражения в библиотеке Boost, или что объект JavaScript RegExp поддерживает. Все они поддерживают регулярные выражения в синтаксисе Perl, но их реализации и функции различны. Запустите в окне командной строки findstr /?, чтобы получить информацию об этом консольном приложении, а какие регулярные выражения поддерживаются findstr.

Но findstr предназначен для вывода строки, содержащей найденную строку, а не только найденную строку. Для поиска не регулярного выражения в файле не было бы смысла выводить только найденную строку, так как она была бы равна строке поиска, возможно, за исключением случая в случае использования опции /I и строки поиска, содержащей буквы.

Поэтому я предлагаю использовать команду ДЛЯ, чтобы получить только 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 для объяснения >>.