Пакетный файл для расчета объектов в различных текстовых файлах - PullRequest
0 голосов
/ 31 мая 2011

У меня есть папка с множеством текстовых файлов. Эти текстовые файлы содержат следующую информацию:

       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 потеряно»

2) Запустить пакетный файл, который подсчитает общее количество «X пакетов RTP было потеряно» на одну сущность. (например, камера YYY = 103 потерянных пакетов RTP)

Любая помощь будет отличной!

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

Предполагая, что

  • XYZ, YYZ, YYY и т. Д. Являются отдельными словами,

  • рассматриваемое значениевсегда третье слово в строке,

  • одни и те же объекты сгруппированы вместе,

вы можете попробовать что-то вроде этого:

@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 голосов
/ 31 мая 2011

Пока я жду, что вы ответите на вопросы в комментарии, вот версия 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"
}

В пакетном файле все намного сложнее, отсюда и вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...