仅通过使用 Batch ping 服务器名称列表来获取 IP 地址

Grab IP addresses only by pinging list of server names using Batch

我有一个包含数百个服务器名称列表的文本文件

Server1

Server2

Server3

Server4

等等...

我想要 运行 一个批处理文件,它将获取这个文件,对所有文件执行 ping 操作,return 如果找到 IP 地址,或者 "DOWN" 如果无法访问或未找到.我想让输出进入output.txt,输出只需要是IP地址或"DOWN"。

示例输出:

176.28.29.100

DOWN

176.28.29.105

176.28.29.110

编辑:我是批处理的新手,到目前为止我已经这样做了:将服务器名放入 excel,在另一列中获取服务器名的数量

ping -n 1 servername | findstr "Pinging host" >> out.txt

...

我得到的输出格式是

Ping request could not find host Server1. Please check the name and try again.

Pinging Sever2 [176.28.29.105] with 32 bytes of data:

Reply from 176.28.29.110: Destination host unreachable.

只想获取 IP

逐行处理文件,使用for /f:

@echo off
setlocal enabledelayedexpansion

for /f %%i in (servers.txt) do (
  set p=DOWN
  set r=no response
  for /f "tokens=2 delims=[]" %%p in ('ping -n 1 -w 1 %%i^|find "["' ) do set p=%%p
  ping -n 1 -w 2000 %%i|find "TTL" >nul && set r=running
  echo %%i  is !p! !r!
)

(根据您的需要调整 echo 行)

你可以这样试试:

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (server.txt) do (
  set "$ip="
  for /f "delims=[] tokens=2" %%b in ('ping -n 1 %%a ^| find "["') do (
   set "$ip=%%b"
  )
   if defined $ip (echo %%a - !$ip! OK) else (echo %%a KO) 
)