Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Копирование нескольких строк текста в файл

Новый участник


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

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


Имеем огромный лог-файл.
Необходимо командой finfstr найти определенную строку и скопировать ее содержимое в файл плюс 5 строчек после нее. И так по всему файлу (таких блоков много). Как это можно сделать через cmd?

Отправлено: 11:45, 13-07-2011

 

Googler


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

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


Цитата delure:
огромный лог-файл »
что значит "огромный"?.. каков порядок виличины?
Какова максимальная длина строки? (FINDSTR имеет ограничение на длину обрабатываемых строк)

Цитата delure:
командой finfstr найти определенную строку »
по какому условию ищется строка? почему нельзя использовать обычный FIND ?

P.S. желательно привести алгоритм поиска строк + кусок лога с вхождением пары искомых блоков (само собой, в тегах CODE)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:04, 13-07-2011 | #2



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

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


Новый участник


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

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


Цитата amel27:
что значит "огромный"?.. каков порядок виличины? »
порядка 1-3 миллиона строк

Цитата amel27:
Какова максимальная длина строки? »
150 символов

Пример куска лог-файла, который нужно искать (всегда начинается с NUMBER + 5 строк ниже):
Код: Выделить весь код
NUMBER: 443160
Status   : Warning
12-07-11  03:16:07
998fdr56-51aa29
F:570bac899119f3014h43160
G1:01555687
Алгоритм: ищем строку, начинающуюся с "NUMBER" и копируем ее в файл плюс еще 5 строк после нее. Нужно скопировать в файл все такие блоки.

Отправлено: 12:41, 13-07-2011 | #3


Googler


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

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


Цитата delure:
ищем строку, начинающуюся с "NUMBER" и копируем ее в файл плюс еще 5 строк после нее. »
тут можно и без FIND(STR) обойтись:
Код: Выделить весь код
(SetLocal EnableDelayedExpansion
 set/a $ai=-1
 for /f "usebackq delims=" %%a in ("file.log") do @(set "$a=%%a"
 if "!$a:~,6!"=="NUMBER" set/a $ai=5
 if !$ai! geq 0 set/a $ai-=1& echo:!$a!)
EndLocal)>"file.out"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:17, 13-07-2011 | #4


Новый участник


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

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


Спасибо.

Отправлено: 15:54, 13-07-2011 | #5


Новый участник


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

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


Помогите. Нужно тоже самое, только копировать эту строку и на одну выше.

(SetLocal EnableDelayedExpansion
set/a $ai=-1
for /f "usebackq delims=" %%a in ("file.log") do @(set "$a=%%a"
if "!$a:~,6!"=="NUMBER" set/a $ai=5
if !$ai! geq 0 set/a $ai-=1& echo:!$a!)
EndLocal)>"file.out"

поясните, если не трудно что тут что значит.
$ai=-1 - почему -1?
if "!$a:~,6!" - это количество символов, или что?
if !$ai! geq 0 set/a $ai-=1& echo:!$a!) - вообще не понял строки ктоме ЭХО

Заранее спасибо!!!

Отправлено: 16:52, 30-08-2012 | #6


Новый участник


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

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


(SetLocal EnableDelayedExpansion
set/a $ai=1
for /f "usebackq delims=" %%a in ("debug.log") do @(set "$a=%%a"
if "!$a:~,0!"=="User anton" set/a $ai=-1
if !$ai! geq 0 set/a $ai-=1& echo:!$a!)
EndLocal)>"1.txt"

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

В чем я ошибся?

Отправлено: 17:13, 30-08-2012 | #7


Новый участник


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

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


Проблема решена)))

@echo off
SetLocal EnableDelayedExpansion

(for /f "usebackq tokens=* delims=" %%a in ("1.log") do (
set "$b=!$a!"
set "$a=%%a"
if not "!$a!"=="!$a:anton=!" (
echo !$b!
echo !$a!
)))>"2.txt"

Отправлено: 10:42, 03-09-2012 | #8


Новый участник


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

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


Тот же вопрос, что и у ОП'а, но нужно текст этой строки использовать как название нового txt файла, в который будут копироваться следующие 9 строчек.
Примерно вот так:
Код: Выделить весь код
Grid 01  (следующие цифры копировать в Grid 01.txt)
003020600
900305001
001806400
008102900
700000008
006708200
002609500
800203009
005010300
Grid 02 (следующие цифры копировать в Grid 02.txt)
200080300
060070084
030500209
000105408
000000000
402706000
301007040
720040060
004010003
 и так далее до конца файла

Отправлено: 13:54, 05-05-2013 | #9


Ветеран


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

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


Если верно то, что Вы указали, на WSH:
Код: Выделить весь код
Option Explicit

Dim objTS
Dim i


With WScript.CreateObject("Scripting.FileSystemObject")
	Set objTS = .OpenTextFile("E:\Песочница\0247\0001.txt")
	
	Do Until objTS.AtEndOfStream
		With .CreateTextFile(objTS.ReadLine())
			For i = 1 To 9
				.WriteLine(objTS.ReadLine())
			Next
			
			.Close
		End With
	Loop
	
	Set objTS = Nothing
End With

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

Отправлено: 16:02, 05-05-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование строк в отдельный файл по условию Seryoga204 Скриптовые языки администрирования Windows 26 24-08-2016 23:33
[решено] Копирование и вставка текста. duxa AutoIt 3 21-12-2010 14:20
CMD/BAT - [решено] Поиск строк с указанным словом и копирование их в отдельный файл Maartimus Скриптовые языки администрирования Windows 2 13-07-2010 20:25
[решено] Работа с html-кодом страницы, поиск и копирование нужных строк Sestrichka AutoIt 14 02-04-2009 16:51
копирование текста volin Хочу все знать 10 08-01-2007 00:18




 
Переход