|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление строк из txt файлов |
|
CMD/BAT - Удаление строк из txt файлов
|
Новый участник Сообщения: 42 |
День добрый, помогите решить одну задачку..
в поиске что то не смог найти что нужно ( в общем есть папка Logs, внутри каждый день создается папка с нов датой, и каждый день пишутся файлы в формате txt с датой в названии, суть логов сводится к тому что 99% строк занимает [2000001] дата время files not found [2000095] дата время files not found и иногда проскакивает в лог что файл отправлен [2000156] дата время file 80009547.dat has been sent ну бывает конечно и таое что файл слишком большой допустим [2000042] дата время error file size ну что то примерно такое.. эти команды пишутся каждые 5 секунд, и за день собирается столько мусора что потом блокнот их открывает приличное время.. так собственно задачка, хочу сделать bat, чтобы искал за предыдущий день логи и удалял оттуда строки содержащие "files not found", а строки с ошибками и успешными отправками оставлял крайне желательно чтоб это было возможно запихать в планировщик задач и чтоб он это делал на постоянной основе |
|
Отправлено: 11:05, 30-09-2022 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:39, 05-10-2022 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать John87,
Цитата John87:
Вопросы: 1. Папка D:\test1 существует? 2. В папке D:\test1 должны быть как минимум 2 подпапки: сегодняшняя и за предыдущий день. Скрипт не привязан к дате. Он пропускает самую свежую папку (по времени создания) и обрабатывает одну предыдущую. 3. В подпапках есть файлы с указанной маской *.txt? Если что-то из перечисленного отсутствует, то будет приведенная Вами картинка. Кстати, если разово убрать GoTo :End то будут обработаны все подпапки, кроме самой свежей. Но именно разово - все папки обрабатывать - лишнее время. |
|
------- Отправлено: 13:22, 05-10-2022 | #12 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать megaloman, совсем забыл в тестовой папке создать еще одну. Спасибо, вроде работает!
теперь вопрос, он собирает нужное, кидает в нов файл, старые файлы он может удалить? |
Отправлено: 08:21, 06-10-2022 | #13 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать John87, старые файлы он может удалить.
@Echo Off cls Set "BoxIn=Z:\Logs" Set "Log=*.txt" Set "KeyWord=files not found" FOR /F "usebackq skip=1 delims=" %%d IN (`2^>nul Dir "%BoxIn%" /A:D /O:-D /T:C /B`) DO ( Echo "%BoxIn%\%%d\%%d" If Not Exist "%BoxIn%\%%d\%%d.txt" ( FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%%d\%Log%" /A:-D /B /O:D /T:C`) DO ( 2>nul >>"%BoxIn%\%%d\%%d.txt" (More "%BoxIn%\%%d\%%f"|Find /I /V "%KeyWord%") Del "%BoxIn%\%%d\%%f" ) ) GoTo :End ) :End pause Exit /B |
------- Отправлено: 10:00, 06-10-2022 | #14 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать megaloman, начал пробовать на живом примере и меня постигла неудача ((
оказывается это не одна строка (( в итоге получил кучу остатков " затрачено 1.163 (sec.)" |
Отправлено: 13:34, 07-10-2022 | #15 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать John87, Дайте реальный файл и что надо удалять. Догадками задачу не решить. CMD команда, способная делать множественный поиск - FindStr - работает с поиском строк в кириллице только в 866 кодировке. С учетом этого вариант (там я привёл только варианты поиска с латиницей):
@Echo Off cls Set "BoxIn=Z:\Logs" Set "Log=*.txt" Set KeyWord=/C:"files not found" /C:"(sec.)" /C:"#imp.Statuses" /C:"error file size" FOR /F "usebackq skip=1 delims=" %%d IN (`2^>nul Dir "%BoxIn%" /A:D /O:-D /T:C /B`) DO ( Echo "%BoxIn%\%%d\%%d" If Not Exist "%BoxIn%\%%d\%%d.txt" ( FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%%d\%Log%" /A:-D /B /O:D /T:C`) DO ( 2>nul >>"%BoxIn%\%%d\%%d.txt" (More "%BoxIn%\%%d\%%f"|FindStr /I /V %KeyWord%) Del "%BoxIn%\%%d\%%f" ) ) GoTo :End ) :End pause Exit /B |
------- Отправлено: 13:14, 08-10-2022 | #16 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
на первое время удаление я исключу из формулы, пусть лежат оригиналы. насколько сложно его научить обращаться с кирилицей в keyword? я немного запутался, такой вопрос, куда дописать чтобы итог выполнения был сложен в отд папку? те допустим чтоб он складывал также по папкам с датой но уже в Z:\ShortLogs допустим? |
|
Отправлено: 13:01, 11-10-2022 | #17 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off cls >nul chcp 1251 Set "BoxIn=Z:\Logs" Set "Log=*.txt" Set "ShortLogs=Z:\ShortLogs" Set KeyWord=^|find /V /I "files not found"^|find /V /I "Обработано.записей"^|find /V /I "затрачено"^|find /V /I "error file size" If Not Exist "%ShortLogs%\*.*" Md "%ShortLogs%" FOR /F "usebackq skip=1 delims=" %%d IN (`2^>nul Dir "%BoxIn%" /A:D /O:-D /T:C /B`) DO ( Echo "%BoxIn%\%%d\%%d" If Not Exist "%ShortLogs%\%%d.txt" ( 2>nul >>"%ShortLogs%\%%d.txt" (Type "%BoxIn%\%%d\%Log%"%KeyWord%) ) GoTo :End ) :End pause Exit /B И лучше бы Вы предоставили 1 файл для тестирования |
------- Последний раз редактировалось megaloman, 11-10-2022 в 23:00. Отправлено: 22:45, 11-10-2022 | #18 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
в прошлый раз закинул, на форуме ограничение на размеры ( |
|
Отправлено: 07:33, 12-10-2022 | #19 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 10:25, 12-10-2022 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - чтение строк из файла и последующая вставка этих строк в copy con file.txt | sermister1 | Скриптовые языки администрирования Windows | 5 | 11-06-2020 15:46 | |
Любой язык - [решено] Добавить блоки строк из одного txt файла в другие txt файлы | Alexander_88 | Скриптовые языки администрирования Windows | 7 | 06-07-2019 00:15 | |
Любой язык - Удаление из txt файлов не нужных строк и дубликатов строк. | voler | Скриптовые языки администрирования Windows | 1 | 26-02-2018 14:10 | |
CMD/BAT - [решено] удаление части строк из всех текстовых файлов в папке | icq99999999 | Скриптовые языки администрирования Windows | 4 | 06-11-2013 07:19 | |
Удаление файлов из списка указанного в txt | blacks2 | Вебмастеру | 28 | 02-09-2009 20:09 |
|