Вопрос или проблема
Я ищу какую-то команду / скрипт, чтобы
сканировать мою назначенную папку, объединять файлы srt (с тем же именем, что и видео) с файлами avi/mp4/mkv, чтобы получить файлы mkv, а затем удалить оригинальные файлы (видео И субтитры).
Сейчас у меня есть этот код (не мой, от каких-то авторов, я его объединил):
@echo off
for /R %%A IN (*.mkv *.avi *.mp4) do (
"C:\Program Files\MKVToolNix\mkvmerge.exe" -o "%%~nxA_CZ.mkv" "%%~A" "%%~nA.srt"
if errorlevel 1 (
echo Предупреждения/ошибки, возникшие во время ремикширования, оригинальный файл не удалён
) else (
del /f "%%A" "%%~nA.srt"
echo Успешно ремикшировано в "%%~dpna (Нет субтитров)%%~xa", оригинальный файл удалён
)
echo.
)
)
)
Это частично работает, но у меня есть несколько проблем.
Параметр /R
не работает, не знаю почему, но когда я помещаю его в папку с подпапками, он сканирует только файлы srt в ней и выдает ошибку “Не удается открыть”. (Эта ошибка также возникает для файлов в одной папке, но в конечном итоге он делает то, что мне нужно.)
Есть ли идеи, как исправить мою проблему?
Вот как нужно добавлять субтитры:
mkvmerge.exe -o "output.mkv" --audio-tracks 1 --no-subtitles --no-attachments
--no-chapters --language 0:und --default-track 0:yes --compression 0:none
--language 1:und --default-track 1:yes --compression 1:none "input.mkv"
--language 0:und --compression 0:none "input.srt" --track-order 0:0,0:1,1:0
--probe-range-percentage 0.50
Ответ или решение
Для решения вашей задачи по объединению видеофайлов формата AVI, MP4 и MKV с субтитрами в формате SRT с помощью MKVMerge, предлагаю модифицировать ваш скрипт, чтобы устранить существующие проблемы и улучшить функциональность.
Проблема с параметром /R и ошибками при объединении
Исходный скрипт сталкивается с проблемами, когда нужно сканировать подкаталоги, и вы получаете ошибки о невозможности открыть файлы. Вероятно, это связано с тем, что в вашем скрипте не правильно обрабатываются пути. Чтобы устранить эти трудности, я рекомендую следующее решение.
Модифицированный скрипт
@echo off
setlocal enabledelayedexpansion
REM Путь к mkvmerge
set mkvmerge_path="C:\Program Files\MKVToolNix\mkvmerge.exe"
REM Сканируем все видеофайлы в целевой папке
for /R %%A IN (*.mkv *.avi *.mp4) do (
set "input_video=%%A"
set "input_subtitle=%%~dpnA.srt"
REM Проверяем наличие соответствующего файла субтитров
if exist "!input_subtitle!" (
REM Формируем имя выходного файла
set "output_file=%%~dpnA_CZ.mkv"
REM Выполняем объединение с другими параметрами
!mkvmerge_path! -o "!output_file!" --audio-tracks 1 --no-subtitles --no-attachments --no-chapters --language 0:und --default-track 0:yes --compression 0:none "!input_video!" --language 1:und --compression 1:none "!input_subtitle!" --track-order 0:0,0:1,1:0 --probe-range-percentage 0.50
REM Проверка на ошибки
if errorlevel 1 (
echo В процессе объединения возникли предупреждения/ошибки, оригинальные файлы не удалены
) else (
del /f "!input_video!" "!input_subtitle!"
echo Успешно объединено в "!output_file!", оригинальные файлы удалены
)
echo.
) else (
echo Файл субтитров для "%%~nA" не найден, пропуск файла.
)
)
endlocal
Описание изменений:
-
Улучшенная проверка субтитров: Перед выполнением команды объединения скрипт проверяет наличие файла субтитров с помощью команды
if exist
. -
Использование переменных: Мы используем переменные для хранения путей к файлам, что делает код более читаемым и упрощает отладку.
-
Обработка ошибок: Добавлена более четкая информативная печать для случаев, когда файлы субтитров не найдены или возникли ошибки во время объединения.
-
Поддержка подкаталогов: Использование
for /R
для рекурсивного сканирования всех подкаталогов на вашем пути.
Оптимизация для SEO:
В вашем коде используются углубленные функции и параметры MKVToolNix, что могло бы привлечь внимание разработчиков и пользователей, ищущих возможности интеграции субтитров в видеофайлы. Подобные решения полезны при необходимости обработки большого объема медиафайлов, что делает ваш контент ценным для более широкой аудитории в области IT и мультимедийной обработки.
Заключение
Теперь ваш скрипт стал более стабильным и универсальным для обработки видеофайлов вместе с субтитрами. Надеюсь, эти изменения решат ваши проблемы и обеспечат успешное выполнение поставленной задачи.