Скрипт для объединения определенной строки нескольких файлов.txt в один файл.txt

У меня ~800 .txt файлов. Мне нужно извлечь имя каждого файла и одну строку внутри файла и экспортировать его в новый файл.txt.

Строка, которую мне нужно скопировать, всегда будет начинаться с "System Boot Time:"

Я хотел бы, чтобы он выводил внутри нового файла.txt что-то вроде этого:

txtfile1

Время загрузки системы: xx / xx / xxxx

txtfile2

Время загрузки системы: xx / xx / xxxx

txtfile3

Время загрузки системы: xx / xx / xxxx

так далее...

Какие команды я могу использовать для этого?

2 ответа

Решение

Мне нужно извлечь имя каждого файла и одну строку внутри файла и экспортировать его в новый файл.txt.

Строка, которую мне нужно скопировать, всегда начинается с System Boot Time:

Я хотел бы, чтобы он выводил внутри нового файла.txt что-то вроде этого:

txtfile1
System Boot Time: xx/xx/xxxx
txtfile2
System Boot Time: xx/xx/xxxx
txtfile3
System Boot Time: xx/xx/xxxx

Используйте следующий пакетный файл.

Merge.cmd:

@echo off
setlocal 
for /f "useback delims=: tokens=1-3" %%i in (`findstr /C:"System Boot Time:" "*.txt"`) do (
  echo %%i >> new.txt
  echo %%j:%%k >> new.txt
)
endlocal

Пример вывода:

F:\test>type ?.txt

1.txt


System Boot Time: 01/01/1900

2.txt


System Boot Time: 01/02/2003

3.txt


System Boot Time: 02/03/2004

F:\test>merge

F:\test>type new.txt
1.txt
System Boot Time: 01/01/1900
2.txt
System Boot Time: 01/02/2003
3.txt
System Boot Time: 02/03/2004

Заметки:

  • Все файлы совпадают *.txt ищется строка, соответствующая `System Boot Time
  • Результаты выводятся на new.txt
  • Если вы хотите запустить Merge.cmd несколько раз не забудьте del new.txt первый.

Дальнейшее чтение

  • Ты можешь использовать sed или даже grep вывести строку из текстового файла.

    (о, я вижу, что вы на Windows. Если у вас нет grep или же sed установлен, вы должны быть в состоянии использовать findstr вместо.)

  • Поместите эту команду в цикл над необходимыми файлами.
  • Перенаправить вывод в файл.
Другие вопросы по тегам