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

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

Ответить
Настройки темы
CMD/BAT - Выбрать из ТХТ строки с датами заданного периода

Пользователь


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

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


Добрый день.
Есть куча тхт файлов я с помощью bat файла выбираю только строки со словом Отключение

rem Оставляем только строки со словом отключение
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir "#*.txt" /a-d /b') do (
findstr /c:"Отключение" "%%i">log.tmp
del "%%i"
move log.tmp "%%i"
)

Получились такие строки
20.01.2016 208980 Отключение
25.01.2016 148557 Отключение
20.02.2016 280087 Отключение
25.02.2016 289205 Отключение

Мне теперь что нужно - задать временной период типа
set nachalo=26.01.16
set konec=25.02.16

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

Отправлено: 07:12, 26-02-2016

 

Ветеран


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

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


surgutfred, попробуйте воспользоваться для этого LogParser'ом (Средство Log Parser 2.2). Возможно также, что и предварительно отбирать строки не придётся.

Отправлено: 07:48, 26-02-2016 | #2



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

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


Пользователь


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

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


Хотелось бы без лишнего софта, на бат файле. Будем думать.

Отправлено: 07:43, 04-03-2016 | #3


Ветеран


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

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


surgutfred, дело в том, что в пакетных файлах нет такого понятия как переменная и её тип. Следовательно, язык пакетных файлов ничего не знает о таком типе данных, как дата, и не имеет никаких средств для работы с ними. Можно, конечно, поизвращаться от полной безвыходности, но зачем?

Я показал, каким образом это можно сделать быстро и просто — одним SQL-запросом. Хотите исключительно встроенными средствами — можно использовать WSH или PoSH. Главный вопрос в объёмах обработки. Если это сотни килобайт — одно дело, сотни мегабайт — совсем-совсем другое, и в последнем случае равных LogParser'у нет.

P.S. Чем он Вам не нравится? Родное средство от Microsoft.

Отправлено: 08:30, 04-03-2016 | #4


Забанен


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

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


Не, LogParser - это от Лукавого, лучше уж действительно одним SQL-запросом все решить. Но если кто-то не ищет легких путей и предположить, что полученные файлы выглядят примерно так:
#file1.txt
Код: Выделить весь код
20.01.2016 208980 Отключение
25.01.2016 148557 Отключение
20.02.2016 280087 Отключение
25.02.2016 289205 Отключение
...
#fileN.txt
Код: Выделить весь код
20.01.2016 208980 Отключение
25.01.2016 148557 Отключение
20.02.2016 280087 Отключение
25.02.2016 289205 Отключение
...
То на бате вытащить нужные строки можно примерно так:
Код: Выделить весь код
@echo off
  setlocal
    chcp 1251>nul
    for /f "tokens=1,* delims=:" %%i in (
      'findstr /rc:"^25\.0[1|2]\.2016" #*.txt'
    ) do echo:%%j>>%%~ni.modified%%~xi
  endlocal&chcp 866>nul
exit /b

Отправлено: 09:49, 04-03-2016 | #5


Ветеран


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

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


Цитата greg zakharov:
Не, LogParser - это от Лукавого, лучше уж действительно одним SQL-запросом все решить. »
LogParser — это и есть «один SQL-запрос».


Цитата greg zakharov:
То на бате вытащить нужные строки можно примерно так:
Код: Выделить весь код
…
'findstr /rc:"^25\.0[1|2]\.2016" #*.txt'
…
»
На мой взгляд, это совсем не то, что:
Цитата surgutfred:
Мне теперь что нужно - задать временной период типа
set nachalo=26.01.16
set konec=25.02.16
и оставить в каждом файле только те строки, которые соответствуют этому периоду »

Отправлено: 10:12, 04-03-2016 | #6


Забанен


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

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


Цитата Iska:
LogParser — это и есть «один SQL-запрос».
Речь про исходный код самого LogParser'а, к обычным файлам можно также как к БД обращаться - чай вестимо.

Цитата Iska:
На мой взгляд, это совсем не то...
Оведно:
Цитата surgutfred:
оставить в каждом файле только те строки, которые соответствуют этому периоду
Но если захватывать записи между этими двумя значениями, то лучше действительно использовать PowerShell.

Последний раз редактировалось greg zakharov, 04-03-2016 в 11:04.


Отправлено: 10:48, 04-03-2016 | #7


Ветеран


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

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


Цитата greg zakharov:
Оведно »
Переведите.

Отправлено: 11:01, 04-03-2016 | #8


Забанен


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

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


Iska, ужель запамятовали?

Отправлено: 11:07, 04-03-2016 | #9


Аватара для Elven

Ветеран


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

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


Iska, оведно

Отправлено: 11:09, 04-03-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Удалить строки из тхт файлов, номера которых указаны в другом тхт файле Alexander_88 Скриптовые языки администрирования Windows 4 14-02-2016 11:21
Любой язык - [решено] заменить ссылки из одного тхт на ссылки в другом тхт Alexander_88 Скриптовые языки администрирования Windows 4 11-10-2015 16:46
Любой язык - [решено] Извлечь определенные строки по счету из одного тхт файла в другой Alexander_88 Скриптовые языки администрирования Windows 11 13-06-2015 12:48
Любой язык - [решено] из одного тхт файла добавить содержимое во все тхт файлы папки gangsterovich Скриптовые языки администрирования Windows 3 06-05-2011 04:29
Прочие - Программа для поиска заданного слова (строки) __sa__nya Программное обеспечение Windows 3 07-03-2009 23:51




 
Переход