Скрипт для объединения определенной строки нескольких файлов.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
первый.
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- for / f - Циклическая команда против результатов другой команды.
- findstr - поиск строк в файлах.
Ты можешь использовать
sed
или дажеgrep
вывести строку из текстового файла.(о, я вижу, что вы на Windows. Если у вас нет
grep
или жеsed
установлен, вы должны быть в состоянии использоватьfindstr
вместо.)- Поместите эту команду в цикл над необходимыми файлами.
- Перенаправить вывод в файл.