如何提取局域网所有连接IP地址单独保存到文本文件供msg命令使用
方案1:CMD 原生实现
直接在CMD中执行以下单行命令,即可提取IP并写入allip.txt:
for /f "tokens=1" %i in ('arp -a ^| findstr /r /c:"^ *[0-9]"') do @echo %i >> allip.txt
如果要写进.bat批处理脚本使用,需要把变量的%i改成%%i:
for /f "tokens=1" %%i in ('arp -a ^| findstr /r /c:"^ *[0-9]"') do @echo %%i >> allip.txt
参数说明:
findstr部分用正则匹配仅保留开头带数字的行,自动过滤掉接口信息、表头这些无关内容tokens=1指定取每行的第一个字段,也就是Internet Address列的IP地址
方案2:PowerShell 实现(更稳定,输出格式无冗余)
Windows 自带的PowerShell可以直接读取ARP表的结构化数据,不需要手动解析文本:
# 直接提取所有IP写入allip.txt Get-NetNeighbor | Select-Object -ExpandProperty IPAddress | Out-File -FilePath allip.txt -Encoding UTF8
如果需要过滤掉广播地址、本机IP、网关这类不需要发告警的地址,可以加过滤规则:
# 示例:排除结尾为255的广播地址、本机IP192.168.1.140 Get-NetNeighbor | Where-Object { $_.IPAddress -notlike "*255" -and $_.IPAddress -ne "192.168.1.140" } | Select-Object -ExpandProperty IPAddress | Out-File -FilePath allip.txt -Encoding UTF8
补充注意事项
- 提取完IP后可以先打开
allip.txt核对内容,避免多余地址 - 使用
msg命令发告警前需要确认目标终端开启了Messenger服务,且防火墙放行了相关端口,否则会发送失败
内容的提问来源于stack exchange,提问作者ahmed
相关产品推荐
相关产品推荐

