Я пытаюсь извлечь строку, расположенную между первой и второй запятыми в определенной строке в серии текстовых файлов (файлов субтитров). Текстовые файлы форматируются следующим образом:
Субтитры01.txt
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour
Style: Default, Estrangelo Edessa, 57, &H00FFFFFF
Style: Title1, Arno Pro, 65, &H00606066
Субтитры02.txt
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour
Style: OP Eng, Arno Pro, 45, &H00100F11
Style: ED Romaji, Nueva Std Cond, 46, &H00FFFFFF
Субтитры03.txt
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour
Style: OP Eng, Estrangelo Edessa, 45, &H00100F11
Style: Default, Arno Pro, 45, &H00100F11
Style: ED Romaji, Nueva Std Cond, 46, &H00FFFFFF
Чего я хочу добиться здесь, так это извлечь имя шрифта для каждой строки, начинающейся с «Стиль:», а затем определить, какие субтитры содержат шрифты, которые я хочу, без повторения. Таким образом, конечный результат будет выводиться в текстовый файл, подобный следующему:
Subtitles01.txt: Estrangelo Edessa
Subtitles01.txt: Arno Pro
Subtitles02.txt: Arno Pro
Subtitles02.txt: Nueva Std Cond
Subtitles03.txt: Estrangelo Edessa
Subtitles03.txt: Arno Pro
Subtitles03.txt: Nueva Std Cond
Only Subtitles03.txt is needed.
Поскольку Subtitles03.txt содержит все шрифты из Subtitles01.txt и Subtitles02.txt, необходим только Subtitles03.txt. Цель состоит в том, чтобы использовать наименьшее количество файлов, чтобы найти уникальные шрифты во всех файлах. Я придумал следующий пакетный скрипт, используя findstr для извлечения строк, начинающихся с «Style:», но я застрял дальше этого.
@echo off
findstr /B /C:"Style:" *.txt > results.txt
if %errorlevel%==0 (
echo Found! logged files into results.txt
) else (
echo No matches found
)
Любая помощь будет оценена по достоинству. Спасибо вам, ребята!