2011-05-31 77 views
0

我有一個文件夾中包含了很多文本文件。這些文本文件包含以下信息:批處理文件來計算各種文本文件中的實體

 Entity     Details 

    Camera XYZ   31 RTP packet(s) have been lost 
    Camera YYZ   141 RTP packet(s) have been lost 
    Camera YYY   3 RTP packet(s) have been lost 
    Camera YYY   100 RTP packet(s) have been lost 

我希望做到以下幾點:

1)運行一個批處理文件,該文件將計算的「X RTP數據包(S總數)已丟失「

2)運行一個批處理文件,它將計算每個實體的」X RTP數據包已丟失「的總數。 (例如相機YYY = 103丟失的RTP包)

任何幫助都會很棒!

+0

實體是否總是相機?還是隻有兩個字?格式是否始終以這種形式出現,即固定寬度的列? – Joey 2011-05-31 15:55:58

+0

實體是各種相機名稱,因此它們的大小和字符數量各不相同。 – Sam 2011-05-31 16:16:42

+0

是的,他們是固定寬度的列。 有沒有什麼辦法可以在MSN上與你聊天或更好地描述我正在嘗試做什麼? – Sam 2011-05-31 16:23:23

回答

0

雖然我等你回答的評論問題,在這裏PowerShell的版本,如果你可以使用它:

gc *.txt | ?{$_ -match 'lost'} | %{ 
    $null = $_ -match '\s+(.+?)\s{2,}(\d+)' 
    New-Object PSObject -Prop @{ Entity = $Matches[1]; Count = [int]$Matches[2]} 
} | group Entity | %{ 
    "$($_.Name) = $(($_.Group | select -exp Count | measure -sum).Sum) RTP packets lost" 
} 

這複雜得多批處理文件,因此問題。

+0

請參閱我上面的評論.. – Sam 2011-05-31 16:53:13

+0

這個問題與這個答案無關,所以它依然存在。但是,這取決於您可以使用PowerShell,可能會或可能不會。 – Joey 2011-05-31 16:59:11

+0

下面是一個示例文本(日誌)文件的鏈接。 http://www.megaupload.com/?d=N194AKD1 – Sam 2011-06-01 05:37:21

0

假設

  • XYZYYZYYY等是單個單詞,

  • 有問題的值始終就行了第三 '字',

  • 相同實體組合在一起,

你可以試試這樣的:

@ECHO OFF 
FOR %%F IN (D:\Path\To\Files\*.txt) DO (
    SET camera= 
    SET totalcnt=0 
    FOR /F "tokens=2,3" %%A IN (%%F) DO CALL :process %%A %%B 
    CALL :process "" 0 
    CALL ECHO Total for file %%F: %%totalcnt%% 
) 
GOTO :EOF 

:process 
IF "%camera%" == "%1" GOTO continue 
IF NOT "%camera%" == "" ECHO Total RTP packets for Camera %camera%: %cnt% 
SET cnt=0 
SET camera=%1 

:continue 
SET /A cnt+=%2 
SET /A totalcnt+=%2 
+0

這就是爲什麼我在評論中問我的問題。可悲的是,這並不容易。 – Joey 2011-06-01 09:47:54

+0

你看過我上傳的文件嗎? – Sam 2011-06-01 10:38:53

+0

喬伊,如果你能幫助我,那將會很棒,有什麼方法可以聊天嗎? – Sam 2011-06-01 11:20:17

相關問題