我在Windows平台(Win7)上,我有一个场景,我知道设备的MAC地址,但它们的IP是在启动时动态选择的。
我想编写一个批处理脚本来ping这些特定设备以确保它们存活。网络上有许多其他设备我不想ping,只有一组10个特定的MAC我想从那里获取IP地址然后ping它们。它们都在地址方案10.1中。(1-255)。(1-255)
我知道,我可以ping整个地址频谱然后
arp -a > arp.txt
...以此格式输出包含IP列表和相关MAC地址的文档
Interface: 192.168.2.27 --- 0xb
Internet Address Physical Address Type
192.168.2.1 00-1f-90-c0-25-fd dynamic
192.168.2.3 00-00-aa-a1-d3-78 dynamic
192.168.2.16 ac-72-89-a7-7e-98 dynamic
192.168.2.17 78-45-c4-2f-71-0b dynamic
192.168.2.18 68-b5-99-8e-1c-35 dynamic
192.168.2.24 b8-ac-6f-30-00-34 dynamic
192.168.2.26 00-90-a9-6f-e0-be dynamic
我的问题是我如何(通过批处理脚本或其他自动方法)找到我感兴趣的MAC地址行,并将IP地址放入一个我可以使用的变量中
在UNIX中我可以grep但是在Windows中我不知所措。
提前感谢您的帮助。
答案 0 :(得分:2)
将输出传递给find
并使用for
循环。
for /f "tokens=1,2,3 delims= " %%i in ('arp -a ^| find "00-1f-90-c0-25-fd"') do (
set ip=%%i
set mac=%%j
)
您可以稍微更改一下,通过输入MAC地址来生成将要ping的批处理脚本pingbymac.bat 00-1f-90-c0-25-fd
@for /f "tokens=1,2,3 delims= " %%i in ('arp -a ^| find "%~1"') do (
ping %%i
)
答案 1 :(得分:1)
找到这一行:
arp -a |find "78-45-c4-2f-71-0b"
仅查找IP地址:
for /f %i in ('arp -a ^|find "2c-27-d7-ef-f8-77"') do echo %i
(如果在批处理文件中使用它,请写%%i
而不是%i