我想要做的是基本讀取包含ping結果的文本文件,檢測某個字符串並將其複製到另一個文本文件中。我想要複製的字符串在示例中是粗體的。從文本文件中讀取一個字符串,並使用批處理文件將其複製到另一個文本文件中
Envoi D'UNE requte '平' 河畔star.c10r.facebook.com [31.13.81.17] AVEC 32個八位字節去donn,esÿ: R,ponse德31.13.81.17ÿ:八位字節= 32臨時工= 77毫秒TTL = 240
Statistiques平傾31.13.81.17: Paquetsÿ:特使,s = 1,再‡我們= 1,perdus = 0(perte 0%), Dur,e近似DES boucles en millisecondes: Minimum = 77ms,Maximum = 77ms,Moyenne = 77ms
我試圖執行這個程序,但變量「resultat」沒有出現在結果中。
@echo off
setlocal enabledelayedexpansion
set OUTPUT_FILE=result.txt
>nul copy nul %OUTPUT_FILE%
for /f %%i in (testservers.txt) do (
set SERVER_ADDRESS=ADDRESS N/A
for /f "tokens=1,2,3,4" %%a in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
if %%a==R,ponse set resultat="%%b %%c %%d"
)
echo %%i [!SERVER_ADDRESS::=!] is resultat >>%OUTPUT_FILE%
)
謝謝。
感謝@馬特的幫助下,我可以編輯我的代碼:
@echo off
setlocal enabledelayedexpansion
set OUTPUT_FILE=result.txt
for /f %%i in (testservers.txt) do (
if not exist %OUTPUT_FILE% type NUL>%OUTPUT_FILE%
for /f "tokens=2 delims=:" %%a in ('ping -n 1 %%i ^| find "TTL="') do (
if errorlevel 0 set resultat=UP: %%a
)
echo %%i is !resultat! >> %OUTPUT_FILE%
set resultat=DOWN
)
我「resultat」的默認值設置爲DOWN,因爲我注意到,如果「TTL」中找到它只會改變,這意味着服務器已啓動。如果沒有找到,程序會顯示「結果」的默認值爲DOWN。 「octets = 32 temps = 77 ms TTL = 240」部分只會在服務器啓動時顯示以顯示統計信息。結果是這樣的:
www.google.com是UP:八位字節= 32名臨時工= 470毫秒TTL = 42
www.facebook.com是UP:八位字節= 32名臨時工= 326毫秒TTL = 241
192.168.1.15是UP:八位字節= 32名臨時工<爲1ms TTL = 128
10.21.107.90爲Down
謝謝您的幫助。
爲什麼這個'^&^&回聲SERVER_IS_UP'和'!SERVER_ADDRESS :: =!'?兩者都沒有影響。 – Endoro 2013-05-08 16:00:40
@Endoro我刪除了這兩部分,因爲它們實際上沒有影響。謝謝。 – Ouss 2013-05-12 12:52:16