繁体   English   中英

从 ping 命令获取 ip 并存储在批处理文件变量中

[英]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

但是,我有两个问题:

  1. 需要能够在 CMD 文件中运行它。 当我尝试时,它似乎不起作用。 我读到的所有内容都说它应该可以工作,但是当我运行 CMD 文件时,什么也没发生。
  2. 我需要能够将生成的 IP 地址值存储在一个变量中,以便我可以在同一个 CMD 文件中的另一个命令中使用它。 似乎变量 %f 已经具有该值,但是当我在 CMD 文件中运行此命令并尝试访问 %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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM