You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改批处理脚本 同时列出可ping通与不可ping通主机的IP地址

问题根因

原脚本仅通过匹配ping返回中的Reply(回复)字段提取IP,仅当主机ping通时才会触发写入逻辑:

  • 主机存在IP但开启防火墙禁ping、网络链路丢包导致ping超时的场景下,ping返回无Reply字段,直接跳过记录写入
  • 未单独提取DNS解析结果,完全依赖ping成功的返回报文取IP,且存在表头写入文件Final.csv、实际数据写入Results.csv的文件名不一致bug
修改后代码
@echo off
chcp 65001 >nul
echo 正在批量解析主机IP并检测连通性...

set "ComputerList=list.txt"
:: 初始化结果文件写入表头
echo 计算机名,IP地址,连通状态>Results.csv
setlocal enabledelayedexpansion

for /f "usebackq tokens=* delims=" %%A in ("%ComputerList%") do (
    set "hostName=%%A"
    set "ipAddr=解析失败"
    set "pingStatus=不通"
    :: 从ping输出首行提取解析到的IP:只要主机名能正常解析,无论是否ping通,IP都会显示在首行的方括号内
    for /f "tokens=2 delims=[]" %%B in ('ping -n 1 -l 1 !hostName! ^| findstr /i "Pinging 正在"') do (
        set "ipAddr=%%B"
    )
    :: 单独检测连通性
    ping -n 1 -l 1 !hostName! | findstr /i /c:"Reply from" /c:"来自" >nul && set "pingStatus=通"
    :: 所有主机无论是否ping通,均写入结果
    echo !hostName!,!ipAddr!,!pingStatus!>>Results.csv
)

echo 处理完成,结果已保存至Results.csv
pause
关键修改说明
  • 拆分IP提取和连通性检测逻辑:IP提取优先匹配ping输出首行方括号内的解析结果,只要主机名能解析到IP,哪怕ping超时也能正常提取
  • 新增连通状态列,直观区分主机是否可以正常ping通
  • 兼容中英文操作系统的ping输出关键字匹配,增加UTF-8编码设置避免中文乱码
  • 修正原脚本文件名不一致的bug,所有主机条目强制写入结果文件,解析失败的主机会标记IP为解析失败,不会出现条目缺失

内容的提问来源于stack exchange,提问作者user1959064

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:06:20