批量ping网站并获取IP

时间:2015-01-16 23:13:45

标签: batch-file web numbers ping

我想从一个网站获取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中有很大的作用,但是当我在批处理文件中输入它时,它不会加载。当我试图关闭窗口时,我得到错误:

“该过程尝试写入不存在的管道。

^ C ^ C ^ C ^ C ^ C ^ C ^ C ^ c取代;这时出人意料。

'a'无法识别为内部或外部命令,可操作程序或批处理文件“

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

ping -n 1 www.google.com

2 个答案:

答案 0 :(得分:1)

尝试类似的东西:

@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

答案 1 :(得分:0)

您的代码可以简化为

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.exefind.exe相同)以避免冲突。