Я создал командный файл Windows на основе некоторых примеров, которые я нашел в другом месте.Он анализирует папку для определенного типа файла (.mkv), а затем запускает mkvmerge.exe из папки MKVToolNix.Команда производит вывод, перечисляя различные дорожки в контейнере.
Ядром файла является
set rootfolder="Z:\Movies"
for /r %rootfolder% %%a in (*.mkv) do (
for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "chapters"') do (
if [%%b]==[0] (
echo "%%a" has no chapters
) else (
echo Doing some interesting stuff!
)
)
)
Приведенный выше пример является частью файла, корневая папка установлена вРазумеется, я хочу проанализировать папку, и, найдя файл с главами, он запустит дополнительные команды.Все это прекрасно работает, но я также хочу проверить субтитры одновременно.Команда find не принимает регулярные выражения, иначе я мог бы просто добавить «субтитры глав».Мои попытки использовать другие команды, такие как findstr, на самом деле не сработали.Как мне использовать RegEx здесь?
Это пример выходного файла, запускающий mkvmerge.exe для файла .mkv
mkvmerge.exe -i "Snow White and the Seven Dwarfs (1937) [tt0029583].mkv"
File 'Snow White and the Seven Dwarfs (1937) [tt0029583].mkv': container: Matroska
Track ID 0: video (MPEG-4p10/AVC/h.264)
Track ID 1: audio (DTS)
Track ID 2: audio (AC-3)
Track ID 3: subtitles (HDMV PGS)
Track ID 4: subtitles (HDMV PGS)
Chapters: 26 entries
В этом примере содержатся дорожки субтитров и глав, а также пакетФайл найдет ключевое слово "главы" (он установлен, чтобы игнорировать регистр).Я также хочу перехватить файлы, которые содержат ключевое слово «субтитры», даже если нет глав.
Чтобы прояснить свои намерения, я хочу, чтобы код:
- Выполнить анализ черезуказанная папка
- Для всех файлов .mkv выполните mkvmerge / i , которая выведет (в виде текста) потоки в этом файле
- Посмотрите на этот вывод и, если онсодержит слово (а) "главы" и / или "субтитры", вызывающие некоторые действия.