批处理中实现服务器名与IP关联及ping结果输出需求
批处理实现服务器名映射IP并ping统计丢包率
实现思路
用set命令直接建立服务器名与IP的键值对关联,通过延迟变量扩展根据输入的服务器名动态获取对应IP,再执行ping命令并提取丢包率信息输出。
完整批处理脚本
@echo off setlocal enabledelayedexpansion :: 定义服务器名与IP的映射列表 set "server1=10.40.90.1" set "server2=10.20.10.1" set "server3=192.168.1.100" :: 检查是否输入了服务器名 if "%~1"=="" ( echo 请输入要ping的服务器名,示例:%~nx0 server1 pause exit /b 1 ) :: 验证输入的服务器名是否存在映射 if not defined %1 ( echo 错误:未找到服务器名 "%1" 的IP映射 pause exit /b 1 ) :: 获取对应服务器的IP set "target_ip=!%1!" :: 执行ping命令并提取丢包率 for /f "tokens=7 delims=%% " %%a in ('ping -n 4 !target_ip! ^| findstr /i "丢失"') do ( set "loss_rate=%%a" ) :: 输出结果 echo 服务器名:%1 echo 数据包丢失率:%loss_rate% endlocal pause
关键部分说明
- 服务器-IP映射定义:用
set "服务器名=IP地址"的格式直接绑定,后续可随时新增或修改条目。 - 延迟变量扩展:启用
enabledelayedexpansion后,用!%1!的格式,能根据用户输入的服务器名(%1是第一个命令行参数)动态取出对应的IP值。 - 丢包率提取:
ping -n 4指定发送4个数据包,通过findstr筛选包含“丢失”的行,再用for命令提取该行的第7个分隔符(以%和空格为分隔),就是丢包率的数值。 - 输入校验:检查是否传入服务器名,以及该服务器名是否存在映射,避免无效输入报错。
使用方法
- 编辑脚本中的服务器-IP映射列表,添加你需要的条目。
- 保存为
PingServer.bat。 - 在命令行或双击运行时,加上服务器名参数,比如:
PingServer.bat server1
内容的提问来源于stack exchange,提问作者Myk
相关产品推荐
相关产品推荐

