批量ping网站并获取ip

Batch ping website and get ip

我想从网站获取 IP 地址(例如 google.com 给我 173.194.66.103),我通过 ping 网站来实现。

For /f "tokens=2 delims=[]" %%a in ('ping -n 1 www.google.com^|find "Pinging"') do set ip=%%a
pause

这在 CMD 中非常有效,但是当我在批处理文件中键入它时它不会加载。当我尝试关闭 window 时,出现错误:

“进程试图写入一个不存在的管道。

^C^C^C^C^C^C^C^C>这时候出乎意料了

'a' 不是内部或外部命令,也不是可运行的程序或批处理文件"

我相信是 ping 部分,当单独 运行 时,它会在批处理中给出相同的错误。

ping -n 1 www.google.com

尝试类似的方法:

@echo off
Title Getting The IP address
Setlocal EnableDelayedExpansion
set myServer=www.google.com
for /f "tokens=1,2 delims=[]" %%a IN ('ping -n 1 !myServer!') DO (
 if "%%b" NEQ "" set ip=%%b
)
echo The IP address of !myServer! is !ip!
EndLocal
Pause

你的代码可以简化为

for /f "tokens=2 delims=[]" %%a in ('ping -n 1 www.google.com') do set "ip=%%a"

不需要 find,因为唯一具有第二个标记的行是带有方括号的行。

但问题依然存在。为什么它会产生指示的错误?

通常的响应是 您的批处理文件名为 ping.cmdping.bat,因此,当您从批处理文件调用 ping ,批处理文件正在调用自身(或者在您的情况和原始代码中,find.cmdfind.bat 也会发生这种情况)。

重命名批处理文件(推荐)或更改调用 ping.exe 的命令(find.exe 相同)以避免冲突。