2013-03-18 108 views
2

我書面方式執行ping操作網站的批處理文件,例如:CMD Findstr工具用ping

Pinging youtube.com [173.194.70.91] with 32 bytes of data: 
Reply from 173.194.70.91: bytes=32 time=187ms TTL=44 

Ping statistics for 173.194.70.91: 
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
    Minimum = 187ms, Maximum = 187ms, Average = 187ms 

和我的程序必須只複製的IP地址,並將其保存爲文本文件。

因此,ping命令到一個文本文件

ping youtube.com >> file.txt 

現在我用的findstr命令來查找IP地址。這很好,如果我用這個:

ping youtube.com -n 1 >nul >>C:\Users\Adrian\Desktop\IP.txt 
findstr /i "Reply from 173.194.70.93: bytes=32 time=188ms TTL=43 C:\IP.txt 

IF %ERRORLEVEL% EQU 0 (
    echo You are winning 
) else (
    echo You are losing 
) 
pause 

現在它說我贏和那一件好事,但我的程序必須在不知道它查找IP地址。所以findstr命令必須知道在這裏間獲取IP地址...

"Reply from 173.194.70.91: bytes=32 time=187ms TTL=44" 

所以它必須從字符串findstr的IP。但我一直在谷歌搜索,沒有發現。

+0

你想在任何情況下,IP地址,或者只是當你收到來自主機的響應? – 2013-03-18 19:52:34

回答

0

試試這個:

@echo off &setlocal 
for /f "tokens=2delims=[]" %%i in ('ping -n 1 youtube.com^|find "["') do set "ip=%%i" 
echo.%ip%>>file.txt 
endlocal 
+1

謝謝,但請你解釋一下for/f和令牌:),是的,我已經穿過它並瞭解它一點點 – Adrianvdh 2013-03-18 19:40:09

+0

find命令通過'[''裏面的字符從'ping'捕獲輸出行。令牌位於分界符之間的這條線上。令牌1是'Pinging youtube.com',令牌2是IP地址(在'['和']'之間)。 – Endoro 2013-03-18 19:46:12

+0

非常感謝你:) – Adrianvdh 2013-03-18 20:35:26

0

如果PowerShell是可以接受的,那麼你可以嘗試:

[System.Net.Dns]::GetHostAddresses("youtube.com") | foreach {echo $_.IPAddressToString } 
+0

另一個問題...你能告訴我火狐瀏覽器,谷歌瀏覽器,Internet Explorer存儲瀏覽歷史文件嗎? – Adrianvdh 2013-03-18 20:36:43

+0

這絕對是一個值得創建新線索的問題,但通過一些谷歌搜索,還有像歷史導出這樣的工具,可以從Web瀏覽器中導出瀏覽歷史記錄。 – 2013-03-18 20:47:19

+0

不,因爲它是我的程序中刪除瀏覽歷史記錄(cmd)的一部分 – Adrianvdh 2013-03-19 05:52:55