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