![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подсчет совпадающих строк в разных файлах |
|
CMD/BAT - [решено] Подсчет совпадающих строк в разных файлах
|
Ветеран Сообщения: 992 |
Не уверен что объяснил правильно, но суть приблизительно такова: имеем несколько логов в папке logs\old\ (old1.log, old2.log old3.log и т.д.) еще один лог формируется в текущий момент и ложится в logs\new.log. Теперь собственно задача: нужно взять построчно new.log и проверить не было ли таких же строк в старых логах, в случае пяти и более совпадений записать эту строку в отдельный файл (например result.log).
|
|
Отправлено: 14:23, 29-08-2014 |
Ветеран Сообщения: 874
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить 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
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 17:09, 31-08-2014 | #5 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Georgio, спасибо. Сокращенный вариант тоже создает просто пустой файл, а вот исправленный который #4 работает.
|
Отправлено: 10:08, 01-09-2014 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|