批处理文件从文本文件中读取行

时间:2015-04-14 10:22:39

标签: batch-file

我是批处理脚本的新手,我希望您对以下内容有所帮助: 我有一个文本文件,看起来像:

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

谢谢你的帮助 问候, 麦克

2 个答案:

答案 0 :(得分: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
   )
) 

如果您只打印第二部分取消注释wX-XXX行并注释rem --

,则应该同时打印mac地址和set %%a

答案 1 :(得分: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

此解决方案速度更快,可以轻松修改,以包含多个文件,多个地址,并包含有关搜索结果的更多/更少详细信息。