Вопрос или проблема
У меня есть пакетный файл, который сжимает все мои файлы из-за моего предыдущего отсутствия знаний и полного диска. Однако, поскольку он выполняется из корня жесткого диска, похоже, он продолжает захватывать мою корзину для мусора, хотя это скрытая папка. Я действительно не хочу, чтобы это происходило, поскольку каждый файл обрабатывается примерно за день.
Вот строка, которая сжимает файлы
@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"
)
)
Объяснение изменений:
-
Исключение определенных папок:
- Мы добавили переменную
excludeFolders
, в которой перечислены папки, которые вы хотите исключить из обработки. Папка корзины обозначается как$RECYCLE.BIN
, а временные файлы находятся в%TEMP%
. Обратитесь к другим системным папкам, если это необходимо (например,System Volume Information
).
- Мы добавили переменную
-
Проверка соответствия пути:
- Внутри цикла, который обрабатывает найденные файлы, мы добавили цикл для проверки, находится ли текущий файл в одной из исключенных папок. Если совпадение найдено, устанавливается флаг
skipFile=true
.
- Внутри цикла, который обрабатывает найденные файлы, мы добавили цикл для проверки, находится ли текущий файл в одной из исключенных папок. Если совпадение найдено, устанавливается флаг
-
Условная обработка файла:
- Перед выполнением команды FFmpeg добавлено условие, которое проверяет, установлен ли флаг
skipFile
. Если файл не находится в одной из исключенных папок, он будет обработан.
- Перед выполнением команды FFmpeg добавлено условие, которое проверяет, установлен ли флаг
Заключение:
Внесенные изменения обеспечивают отсутствие обработки файлов из ненужных папок, включая корзину, что существенно снизит время, необходимое для компрессии и предотвратит случайные ошибки. Разумеется, вы можете добавлять другие папки или файлы в список исключений по мере необходимости.
Это решение обеспечит более целенаправленный и эффективный процесс компрессии файлов.