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

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

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

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


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

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


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

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

 

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


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

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


Спасибо!
Работает. Лишь файлы без расширения txt создает. Но это не проблема)

Отправлено: 21:26, 05-05-2013 | #11



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

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


Ветеран


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

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


Код: Выделить весь код
@ECHO OFF
ECHO FOR /F "skip=1 eol=E delims=_ tokens=2" %%%%I IN (Temp.cmd) DO CALL :Grid_%%%%I "Grid %%%%I.txt">Temp.cmd
ECHO :Grid_01>>Temp.cmd
ECHO ECHO OFF^>%%1>>Temp.cmd
FOR /F "usebackq skip=1 tokens=1*" %%I IN ("Your File") DO (
  IF %%I==Grid (
   ECHO EXIT /B>>Temp.cmd
   ECHO :%%I_%%J>>Temp.cmd
   ECHO ECHO OFF^>%%1>>Temp.cmd
) ELSE (
   ECHO ECHO %%I^>^>%%1>>Temp.cmd
))
ECHO ERASE Temp.cmd^&^&EXIT>>Temp.cmd
CALL Temp.cmd
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Georgio, спасибо!

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


Ветеран


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

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


Цитата eltanin:
Лишь файлы без расширения txt создает »
Я думал, что в файле имена с расширением будут. Добавьте выделенное:
Код: Выделить весь код
With .CreateTextFile(objTS.ReadLine() & ".txt")

Отправлено: 23:38, 05-05-2013 | #14


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


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

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


Доброго времени суток.
Из сказанного выше ни чего не понял, на форуме решение не нашёл.
Необходимо из файла скопировать поля из ==Сертификат 1== в новый файл. Сертификатов может быть сколько угодно, идентификатор - SERVER-2-CA.

Код: Выделить весь код
my "Личное"
================ Сертификат 0 ================
Серийный номер: 11111111111111111111111111111111111111
Поставщик: CN=SERVER-1-CA, DC=ya, DC=ru
 NotBefore: 10.12.2013 14:42
 NotAfter: 10.12.2014 14:42
Субъект: E=ivanov@ya.ru, CN=Иванов Иван Иванович, OU=Офис, OU=Организация, DC=ya, DC=ru
Имя шаблона сертификата (Тип сертификата): Test
Не корневой сертификат
Шаблон: Test, Пользователь
Хеш сертификата(sha1): 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
  Контейнер ключа = 11111111111111111111111111111111
  Уникальное имя контейнера: 111111111111111111111111111111111111111111111111111111111111111111
  Поставщик = Microsoft Enhanced Cryptographic Provider v1.0
Закрытый ключ НЕ экспортируем
Тест шифрования пройден

================ Сертификат 1 ================
Серийный номер: 22222222222222222222222222222222222222
Поставщик: CN=SERVER-2-CA, DC=mail, DC=ru
 NotBefore: 10.12.2013 9:04
 NotAfter: 10.12.2014 9:04
Субъект: E=petrov@mail.ru, CN=Петров Пётр Петрович, OU=Организация, DC=mail, DC=ru
Не корневой сертификат
Шаблон: Test
Хеш сертификата(sha1): 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
  Контейнер ключа = 222222222222222222222222222222222222222
  Поставщик = Microsoft Enhanced Cryptographic Provider v1.0
Закрытый ключ НЕ экспортируем
Тест шифрования пройден
CertUtil: -store — команда успешно выполнена.
Необходимые поля:

Серийный номер: 22222222222222222222222222222222222222
Поставщик: CN=SERVER-2-CA, DC=mail, DC=ru
NotBefore: 10.12.2013 9:04
NotAfter: 10.12.2014 9:04
Субъект: E=petrov@mail.ru, CN=Петров Пётр Петрович, OU=Организация, DC=mail, DC=ru
Хеш сертификата(sha1): 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22
Контейнер ключа = 222222222222222222222222222222222222222
Поставщик = Microsoft Enhanced Cryptographic Provider v1.0


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

Отправлено: 16:18, 30-12-2013 | #15


Ветеран


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

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


Validus, упакуйте образец файла:
Цитата Validus:
Необходимо из файла скопировать поля »
в архив и прикрепите к сообщению. Если что-то особо секретное — под пароль, выкладывайте на RGhost. Ссылку и пароль на архив — в личку.

Отправлено: 16:29, 30-12-2013 | #16


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


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

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


Временно удалось слепить вот это:

Код: Выделить весь код
@echo off
set OUTPUT=crv.txt

if "%STDOUT_REDIRECTED%" == "" (
    set STDOUT_REDIRECTED=yes
    cmd.exe /c %0 %* >%OUTPUT%
    exit /b %ERRORLEVEL%
)

certutil.exe -store -user my > 1.txt

SetLocal EnableDelayedExpansion
::Кол-во строк, читаемых с конца файла
Set NLast=13
for /f "usebackq delims=" %%a in ("1.txt") do (
  for /L %%C in (%NLast%,-1,2) do (
    Set /A NN=%%C-1
    for /L %%N in (!NN!,1,!NN!) do Set Line.%%C=!Line.%%N!
  )
  Set Line.1=%%a
)
for /L %%C in (%NLast%,-1,1) do Echo.!Line.%%C! >> cert.txt
del 1.txt
FINDSTR /I "Серийный номер" cert.txt
FINDSTR /I "AKBK-CERT-CA" cert.txt
FINDSTR /I "NotBefore" cert.txt
FINDSTR /I "NotAfter" cert.txt
FINDSTR /I "ект:" cert.txt
FINDSTR /I "корневой" cert.txt
FINDSTR /I "аблон" cert.txt
FINDSTR /I "sha1" cert.txt
FINDSTR /I "нер ключа" cert.txt
FINDSTR /I "Cryptographic Provider" cert.txt
del cert.txt
Этот варварский скрипт работает только когда нужные мне данные появляются в конце файла, в иных случаях он бесполезен. Копаю дальше.

Отправлено: 13:32, 10-01-2014 | #17


Ветеран


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

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


Validus, пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strSourceFile
Dim strDestFile

Dim strPattern

Dim arrContent
Dim elem
Dim strLine


strSourceFile = "E:\Песочница\0350\1.txt"
strDestFile   = "E:\Песочница\0350\Destination.txt"

strPattern    = "SERVER-2-CA"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strSourceFile) Then
		With .OpenTextFile(strSourceFile)
			arrContent = Split(.ReadAll(), " Сертификат ")
			.Close
		End With
		
		With .CreateTextFile(strDestFile, True)
			For Each elem In arrContent
				If InStr(elem, "Поставщик: CN=" & strPattern) > 0 Then
					For Each strLine In Split(elem, vbCrLf)
						If Len(strLine) <> 0 Then
							Select Case Trim(Split(strLine, ":")(0))
								Case "Серийный номер", "Поставщик", "NotBefore", "NotAfter", "Субъект", "Хеш сертификата(sha1)"
									.WriteLine strLine
							End Select
							
							Select Case Trim(Split(strLine, " = ")(0))
								Case "Контейнер ключа", "Поставщик"
									.WriteLine strLine
							End Select
						End If
					Next
				End If
			Next
			
			.Close
		End With
	Else
		WScript.Echo "Source file [" & strSourceFile & "] not found."
		WScript.Quit 1
	End If
End With

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

Отправлено: 10:50, 14-01-2014 | #18


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


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

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


У меня вот, что получилось:
Код: Выделить весь код
Microsoft Windows [Version 6.2.9200]
(c) Корпорация Майкрософт, 2012. Все права защищены.

D:\>bat.bat

D:\>Option Explicit
"Option" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>Dim strSourceFile
"Dim" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>Dim strDestFile
"Dim" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>Dim strPattern
"Dim" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>Dim arrContent
"Dim" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>Dim elem
"Dim" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>Dim strLine
"Dim" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>strSourceFile = "D:\1.txt"
"strSourceFile" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>strDestFile   = "D:\Destination.txt"
"strDestFile" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>strPattern    = "SERVER-2-CA"
"strPattern" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\>With WScript.CreateObject("Scripting.FileSystemObject")
"With" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Непредвиденное появление: Then.

D:\> If .FileExists(strSourceFile) Then

D:\>
В скрипте я ещё не разобрался, но может я делаю что-то не так?

Отправлено: 11:42, 14-01-2014 | #19


Ветеран


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

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


Скопируйте вышеприведённый код. Создайте файл с расширением «.vbs». Вставьте в него из буфера обмена скопированный код, замените в нём выделенное Вашими значениями и сохраните. Затем можете запустить сохранённый файл двойным щелчком из Проводника.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:05, 14-01-2014 | #20



Компьютерный форум 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




 
Переход