При использовании ffmpeg через пакетные файлы, как я могу исключить файлы/папки?

Вопрос или проблема

У меня есть пакетный файл, который сжимает все мои файлы из-за моего предыдущего отсутствия знаний и полного диска. Однако, поскольку он выполняется из корня жесткого диска, похоже, он продолжает захватывать мою корзину для мусора, хотя это скрытая папка. Я действительно не хочу, чтобы это происходило, поскольку каждый файл обрабатывается примерно за день.

Вот строка, которая сжимает файлы

@echo off
set "_x=сжатый"
for /r %%i in (*.mkv, *.mp4, *.mov) do ffmpeg -i "%%~fi" -map 0:v -vcodec libx265 -crf 24 -map 0:a "%%~dpni%_x%.mp4"

Ответ или решение

Вам нужно модифицировать свой пакетный файл, чтобы исключить определенные файлы и папки из процесса компрессии с помощью FFmpeg. В данном случае ваша проблема заключается в том, что пакетный файл обрабатывает файлы из корзины (рециклер), что нежелательно. Я предоставлю вам решение, которое поможет вам исключить скрытые папки, такие как корзина, и оптимизировать процесс.

Ниже представлен обновленный код с комментариями, которые поясняют изменения:

@echo off
set "_x=compressed"

:: Определяем директории, которые нужно исключить
set "excludeFolders=%TEMP%;$RECYCLE.BIN;System Volume Information;"

:: Используем цикл для рекурсивного поиска файлов
for /r %%i in (*.mkv *.mp4 *.mov) do (
    set "skipFile=false"
    for %%j in (%excludeFolders%) do (
        if "%%~dpi" == "%%~dpj" set "skipFile=true"
    )
    if not "!skipFile!" == "true" (
        ffmpeg -i "%%~fi" -map 0:v -vcodec libx265 -crf 24 -map 0:a "%%~dpni%_x%.mp4"
    )
)

Объяснение изменений:

  1. Исключение определенных папок:

    • Мы добавили переменную excludeFolders, в которой перечислены папки, которые вы хотите исключить из обработки. Папка корзины обозначается как $RECYCLE.BIN, а временные файлы находятся в %TEMP%. Обратитесь к другим системным папкам, если это необходимо (например, System Volume Information).
  2. Проверка соответствия пути:

    • Внутри цикла, который обрабатывает найденные файлы, мы добавили цикл для проверки, находится ли текущий файл в одной из исключенных папок. Если совпадение найдено, устанавливается флаг skipFile=true.
  3. Условная обработка файла:

    • Перед выполнением команды FFmpeg добавлено условие, которое проверяет, установлен ли флаг skipFile. Если файл не находится в одной из исключенных папок, он будет обработан.

Заключение:

Внесенные изменения обеспечивают отсутствие обработки файлов из ненужных папок, включая корзину, что существенно снизит время, необходимое для компрессии и предотвратит случайные ошибки. Разумеется, вы можете добавлять другие папки или файлы в список исключений по мере необходимости.

Это решение обеспечит более целенаправленный и эффективный процесс компрессии файлов.

Оцените материал
Добавить комментарий

Капча загружается...