簡體   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