1

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

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

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

txtfile1

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

txtfile2

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

txtfile3

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

так далее...

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

2 ответа2

0

Мне нужно извлечь имя каждого файла и одну строку внутри файла, и экспортировать его в новый файл .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 .

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .