[英]How to use ping command as a variable to be used as breaking condition in a batch file?
[英]getting ip from ping command and storing in batch file variable
正在寻找一种方法来获取网络上另一台计算机的 IP 地址。 在另一个线程中找到了这个优秀的代码:
for /f "tokens=2 delims=[]" %f in ('ping -4 -n 1 piratelufi.com ^|find /i "pinging"') 回显 %f
但是,我有两个问题:
想知道是否有人知道修改它的方法,所以我在 CMD 文件中运行此代码并获取 IP 以用于另一个命令?
谢谢!
尝试这个。 有两个设置的 PCName 行,您可以 REM 出一个和 un-REM 另一个,以查看它提供了不同的 IP。
@ECHO OFF
SET "PCName=piratelufi.com"
REM SET "PCName=google.com"
FOR /F "tokens=2 delims=[]" %%F IN ('PING -4 -n 1 %PCName%') DO SET "PCIP=%%F"
ECHO {%PCIP%}
编辑:感谢 Stephan 指出FIND
没有做任何有价值的事情,实际上是在创建不必要的依赖项。 PING
仅生成与tokens=2 delims=[]
匹配的一行,导致仅执行一次DO
。 上面的脚本现在已经删除了FIND
。 {我不检查原始代码是什么,不是做什么,这很糟糕。}
在这个批处理脚本中:我们可以从 ping 结果中提取 IP,如果您想每分钟检查一次 state,我们可以添加一个循环!
@echo off
set "Link=piratelufi.com"
Title Ping Tester for "%Link%"
:MainPing
set "state="
setlocal enableextensions enabledelayedexpansion
@for /f "tokens=2 delims=[]" %%b in ('ping -4 -n 1 !Link!') do set "ip=%%b"
ping -n 1 !Link!>nul && set "state=UP" || set "state=Down"
)
:Myloop
echo. %date% %time% [!Link!] [!ip!] Link is !state!
Timeout /T 60 /NoBreak>nul & goto MainPing
endlocal
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.