2015-04-14 2 views
1

Я новичок в пакетный сценарий и я хотел бы вашу помощь для следующих действий: У меня есть текстовый файл, который выглядит следующим образом:Пакетного файла для чтения строки из текстового файла

E8-40-F2-3C-2E-FD,w7-301 
E8-40-F2-AC-D4-E0,w7-302 
E8-40-F2-AB-D9-F6,w7-303 
E8-40-F2-3C-2F-2D,w7-304 
E8-40-F2-AB-D0-D7,w7-305 

моя цель состоит в том, чтобы поиск для MAC адрес, если существует в файле, и если да, чтобы напечатать имя после запятой, что принадлежит к этому MAC:

Например: я хочу, чтобы искать E8-40-F2-AC-D4-E0 (она будет представлена ​​в качестве переменной, а не в виде строки) и он напечатает: w7-302

Спасибо вам за помощь С уважением, Майк

+0

если MAC-адрес существует в качестве локальной карты на одном компьютере или MAC-адрес существует в какой-либо локальной сети? – npocmaka

ответ

0

В качестве альтернативы вы можете использовать findstr:

@echo off 
:: You can replace 'address' with your own variable name 
set address=E8-40-F2-AC-D4-E0 

:: You would have to replace 'C:\mac.txt' with the actual path 
for /f "tokens=2 delims=," %%a in ('findstr /B /L "%address%" "C:\mac.txt"') do echo %%a 

Это решение намного быстрее и может быть легко изменен, чтобы включить несколько файлов, несколько адресов и включить больше/меньше деталей о результатах поиска.

+0

Спасибо, ребята, он отлично работает! – Mike

+0

не могли бы вы помочь мне с еще одной вещью, пожалуйста, Я использую «getmac» для извлечения локального адреса и сохраняю его в файле «mymac», и он выглядит так: 2 F0-79-59-62-20 -EB \ Device \ Tcpip_ {F4744941-2A87-4DFA-A61B-393B8830B0C3} первая строка пуста и начинается со второго, без пробела в начале как я могу отредактировать этот файл, поэтому у меня будет только MAC в первом ряду? – Mike

1

Не тестировался .Вы необходимо изменить путь к файлу:

@echo off 
set mac_file=c:\mac_adr.txt 

for /f "usebackq tokens=1* delims=," %%a in ("%mac_file%") do (
    set "%%a=%%b" 
) 

for /f "tokens=2" %%a in ('arp -a') do (
    if defined %%a (
    set %%a 
    rem -- or 
    rem -- for /f "tokens=2 delims==" %%z in ('set %%a') do echo %%z 
    ) 
) 

это должно печатать как MAC-адрес и wX-XXX, если вы хотите для печати только второй части раскомментировать строки rem -- и комментарий set %%a

Смежные вопросы