Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подсчет совпадающих строк в разных файлах

Ответить
Настройки темы
CMD/BAT - [решено] Подсчет совпадающих строк в разных файлах

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Не уверен что объяснил правильно, но суть приблизительно такова: имеем несколько логов в папке logs\old\ (old1.log, old2.log old3.log и т.д.) еще один лог формируется в текущий момент и ложится в logs\new.log. Теперь собственно задача: нужно взять построчно new.log и проверить не было ли таких же строк в старых логах, в случае пяти и более совпадений записать эту строку в отдельный файл (например result.log).

Отправлено: 14:23, 29-08-2014

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off

pushd "logs\old"
(
for /f "usebackq delims=" %%i in ("..\new.log") do (
 for %%j in (
  "old1.log"
  "old2.log"
  "old3.log"
  ) do (
  for /f "usebackq delims=" %%k in (%%j) do (
   set /p=%%k<nul| findstr /lc:"%%i">nul&& (
   set /a count+=1
   for /f %%l in ('
    set /a count
   ') do (
    if %%l==5 (
     echo.%%i
     )
    )
    )
   )
  )
 set count=
 )
)>"%~dp0result.log"
popd

exit /b

Последний раз редактировалось Georgio, 29-08-2014 в 18:37.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:22, 29-08-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


извиняюсь за непонятки - old1.log, old2.log, old3.log я дал чисто для примера
подредактировал чтобы целпяло все нужные файлы - не фурычит. создается пустой файл, хотя строки находит и их заведомо больше чем 5. где я накосячил?
Код: Выделить весь код
@echo off
pushd "logs\old"
(
for /f "usebackq delims=" %%i in ("..\new.log") do (
 for /f %%j in ('dir /B /O-D *.log') do (
  for /f "usebackq delims=" %%k in (%%j) do (
   set /p=%%k<nul| findstr /lc:"%%i" "..\new.log">nul&& set /a count+=1
   for /f %%l in ('
    set /a count
   ') do (
    if %%l GEQ 5 (
     echo.%%k
     set count=
     )
    )
   )
  )
 )
)>"%~dp0result.log"
popd

Отправлено: 16:14, 29-08-2014 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Elven, отредактировал и свой код (см. выше), и Ваш код (см. ниже). Оба работают.


Код: Выделить весь код
@echo off
pushd "logs\old"
(
for /f "usebackq delims=" %%i in ("..\new.log") do (
 for /f "delims=" %%j in ('dir /a-d/b/o-d *.log') do (
  for /f "usebackq delims=" %%k in ("%%j") do (
   set /p=%%k<nul| findstr /lc:"%%i">nul&& (
   set /a count+=1
   for /f %%l in ('
    set /a count
   ') do (
    if %%l equ 5 (
     echo.%%k
     )
    )
    )
   )
  )
 set count=
 )
)>"%~dp0result.log"
popd
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:49, 29-08-2014 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Elven, существенно упростил решение:


Код: Выделить весь код
@echo off

pushd "logs\old"
(
for /f "usebackq delims=" %%i in ("..\new.log") do (
 for /f %%j in ('
  findstr /lxc:"%%i" *.log^| find /c /v ""
 ') do (
  if %%j geq 5 (
   echo.%%i
   )
  )
 )
)>"%~dp0result.log"
popd

exit /b

.

Отправлено: 17:09, 31-08-2014 | #5


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Georgio, спасибо. Сокращенный вариант тоже создает просто пустой файл, а вот исправленный который #4 работает.

Отправлено: 10:08, 01-09-2014 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подсчет совпадающих строк в разных файлах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Подсчет оригинальных строк в текстовом документе vision-d Скриптовые языки администрирования Windows 21 07-02-2014 11:14
CMD/BAT - Подсчет количества одинаковых строк в txt файле lexis1980 Скриптовые языки администрирования Windows 1 19-11-2013 11:46
VBS/WSH/JS - Удаление строк в INI файлах gen0m.rsw Скриптовые языки администрирования Windows 5 27-06-2013 15:03
CMD/BAT - Подсчет количества строк в текстовом файле sl1mus Скриптовые языки администрирования Windows 3 28-06-2012 21:29
C/C++ - [решено] Подсчет количества строк в Си dionis12006 Программирование и базы данных 2 27-01-2011 15:57




 
Переход