2017-04-24 113 views
0

謝謝。檢查兩行之間是否爲空(字符串)

我有一個日誌文件,其中包含該命令的結果是這樣的(模式)

----- Opening connection to: 10.4.2.1 at 13:35:07.49 ----- 

Passed 

----- Closing connection to: 10.4.2.1 at 13:35:26.54 ----- 


----- Opening connection to: 10.4.28.17 at 13:35:07.49 ----- 

Failed 

----- Closing connection to: 10.4.28.17 at 13:35:45.50 ----- 


----- Opening connection to: 10.4.24.15 at 13:35:07.49 ----- 


----- Closing connection to: 10.4.24.15 at 13:36:27.85 ----- 


----- Opening connection to: 10.4.4.5 at 13:35:07.49 ----- 


----- Closing connection to: 10.4.4.5 at 13:36:27.85 ----- 

想獲得其中有間空行的服務器列表(打開/關閉連接模式)

到目前爲止,我能做到這一點,其得到的結果只有最後一個條目文件

代碼:

@ECHO OFF 
setlocal ENABLEDELAYEDEXPANSION 
color 9E 
title Tool 
SET "sourcedir=C:\Logs\" 
SET "destdir=C:\Logs\" 
for /f "tokens=1 delims=[]" %%a in ('find /n "Opening connection to"^<"%sourcedir%\Results.log" ') do set /a start=%%a 
for /f "tokens=1 delims=[]" %%a in ('find /n "Closing connection to"^<"%sourcedir%\Results.log" ') do set /a end=%%a 
(
for /f "tokens=1* delims=[]" %%a in ('find /n /v ""^<"%sourcedir%\Results.log" ') do (
IF %%a geq %start% IF %%a leq %end% ECHO(%%b 
) 
)>"%destdir%\FailedList.log" 
GOTO :EOF 
所以在FailedList.log

,我看到的只是IP詳細

10.4.24.15 
10.4.4.5 

回答

2

此代碼得到你想要的輸出,當輸入數據有你的示例數據的模式:

@echo off 
setlocal EnableDelayedExpansion 

set "ip=" 
(for /F "tokens=1,5" %%a in (Results.log) do (
    if "%%b" equ "!ip!" echo !ip! 
    set "ip=%%b" 
)) > FailedList.log 
+0

感謝Aacini。這對我來說非常完美。 – HULK