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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Извлечение строк in.txt -> out.txt в определенном порядке+форматирование текста.

Ответить
Настройки темы
CMD/BAT - Извлечение строк in.txt -> out.txt в определенном порядке+форматирование текста.

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


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

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


Изменения
Автор: ppm85
Дата: 28-09-2015
Всем привет!
Необходимо в файл out.txt извлечь из файла in.txt строки(с определенными словами) в нужном порядке и убрать лишние пробелы перед словами и между ними поставить знак табуляции.

Пример:
in.txt

Код: Выделить весь код
--------[ Суммарная информация ]----------------------------------------------------------------------------------------

    Компьютер:
      Тип компьютера                                    ACPI компьютер на базе x64  (Mobile)
      Операционная система                              Microsoft Windows 8.1 Professional
      Пакет обновления ОС                               -
      Internet Explorer                                 11.0.9600.16384 (IE 11.0)
      DirectX                                           DirectX 11.2
      Имя компьютера                                    PP
      Имя пользователя                                  1
      Вход в домен                                      PP
      Дата / Время                                      2015-09-28 / 10:04

    Системная плата:
      Тип ЦП                                            Mobile DualCore Intel Core i5-3337U, 2700 MHz (27 x 100)
      Системная плата                                   Hewlett-Packard HP ENVY Sleekbook 6
      Чипсет системной платы                            Intel Panther Point HM77, Intel Ivy Bridge
      Системная память                                  8096 МБ  (DDR3-1600 DDR3 SDRAM)
      DIMM1: Micron 8KTF51264HZ-1G6E1                   4 ГБ DDR3-1600 DDR3 SDRAM  (11-11-11-28 @ 800 МГц)  (10-10-10-27 @ 761 МГц)  (9-9-9-24 @ 685 МГц)  (8-8-8-22 @ 609 МГц)  (7-7-7-19 @ 533 МГц)  (6-6-6-16 @ 457 МГц)  (5-5-5-14 @ 380 МГц)
      DIMM3: Micron 8KTF51264HZ-1G6E1                   4 ГБ DDR3-1600 DDR3 SDRAM  (11-11-11-28 @ 800 МГц)  (10-10-10-27 @ 761 МГц)  (9-9-9-24 @ 685 МГц)  (8-8-8-22 @ 609 МГц)  (7-7-7-19 @ 533 МГц)  (6-6-6-16 @ 457 МГц)  (5-5-5-14 @ 380 МГц)
      Тип BIOS                                          Insyde (05/16/2014)


Необходимо извлечь строки(имеющие данные слова) в определенном порядке, убрать пробелы перед началом этих строк и поставить знаки табуляции между столбцами:
Код: Выделить весь код
Системная плата:
Системная память
Тип ЦП
Системная плата
out.txt

Код: Выделить весь код
Системная плата:
Системная память[TAB]8096 МБ  (DDR3-1600 DDR3 SDRAM)
Тип ЦП[TAB]Mobile DualCore Intel Core i5-3337U, 2700 MHz (27 x 100)
Системная плата[TAB]Hewlett-Packard HP ENVY Sleekbook 6


Как извлекать строки с определенным текстом вроде разобрался:
Код: Выделить весь код
findstr.exe /i /g:words.txt in.txt >out.txt
,где words - список искомых слов в строках. Только так не сортируются строки в том порядке, в котором перечислены искомые слова в words.txt

p.s. Нужно генерировать отчеты из Aida64 с определенными полями, убирая лишние, чего сама Aida64 не позволяет делать ввиду ограниченного функционала. Затем всё это добро закидывается в Excel, где разбивается на столбцы благодаря знакам табуляции.

Отправлено: 14:37, 28-09-2015

 

Ветеран


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

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


ppm85, а есть ли смысл огород городить на 30-дневную пробную версию?

Отправлено: 15:34, 28-09-2015 | #2



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

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


Ветеран


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

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


Код: Выделить весь код
@<"in.txt">"out.txt" (for /f "tokens=1,2*" %%i in (
 'for %%i in ("Системная плата:" "Системная память" "Тип ЦП" "Системная плата "^) do @find/i %%i'
) do @if "%%k" equ "" (echo %%i %%j) else (echo %%i %%j	%%k))
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:24, 28-09-2015 | #3


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


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

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


Цитата Iska:
ppm85, а есть ли смысл огород городить на 30-дневную пробную версию? »
У Вас есть альтернативное предложение по инвентаризации?

Отправлено: 06:05, 29-09-2015 | #4


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


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

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


Georgio, да, скрипт отрабатывает, только не везде знаки табуляции ставит:
Код: Выделить весь код
Системная плата:
Системная память	8096 МБ  (DDR3-1600 DDR3 SDRAM)
Тип ЦП	Mobile DualCore Intel Core i5-3337U, 2700 MHz (27 x 100)
Системная плата	Hewlett-Packard HP ENVY Sleekbook 6

Отправлено: 06:24, 29-09-2015 | #5


Ветеран


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

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


ppm85, символ табуляции (0x09) проставляется во всех указанных Вами местах текста. Просто не везде Вы его замечаете. Таков уж этот символ, символ-хамелеон, -- может "мимикририровать" и под символ пробела.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:00, 29-09-2015 | #6


Ветеран


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

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


Цитата ppm85:
У Вас есть альтернативное предложение… »
Ага. WSH, PoSH.

Цитата ppm85:
…по инвентаризации? »
Вот я и говорю про то — довольно-таки странно основывать инвентаризацию на 30-дневной пробной версии.


Цитата ppm85:
только не везде знаки табуляции ставит: »
Потому лучше выкладывать не содержимое текстового файла, а сам текстовый файл, предварительно упаковав его в архив.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:29, 29-09-2015 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Извлечение строк in.txt -> out.txt в определенном порядке+форматирование текста.

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужно создать "батник" - вырезать из "2.txt" первых n строк и вставить их в "1.txt" temphard Скриптовые языки администрирования Windows 12 10-01-2014 18:36
CMD/BAT - [решено] как реализовать file.exe>file1.txt>>file2.txt nfs911 Скриптовые языки администрирования Windows 1 29-08-2013 20:39
CMD/BAT - [решено] Копирование\перенос строк с 1.txt до определённой строки\секции в 2.txt. crimes Скриптовые языки администрирования Windows 7 11-06-2013 14:42
CMD/BAT - [решено] извлечение строчки в .txt файлах neprotiv Скриптовые языки администрирования Windows 2 24-09-2012 15:17
CMD/BAT - [решено] Парсер строк TXT файла Flayer Скриптовые языки администрирования Windows 9 15-10-2011 09:44




 
Переход