批量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.cmd
、ping.bat
,因此,当您从批处理文件调用 ping
,批处理文件正在调用自身(或者在您的情况和原始代码中,find.cmd
或 find.bat
也会发生这种情况)。
重命名批处理文件(推荐)或更改调用 ping.exe
的命令(find.exe
相同)以避免冲突。
我想从网站获取 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.cmd
、ping.bat
,因此,当您从批处理文件调用 ping
,批处理文件正在调用自身(或者在您的情况和原始代码中,find.cmd
或 find.bat
也会发生这种情况)。
重命名批处理文件(推荐)或更改调用 ping.exe
的命令(find.exe
相同)以避免冲突。