-1

Я пытаюсь пакетно добавить обложку ко всем моим MKV-файлам в Windows с помощью пакетного скриптинга, но не могу. Моя файловая структура выглядит так:

Video1.mkv
Video1.jpg

И видео, и изображение имеют одинаковое имя файла, единственное отличие - расширение.

Я попробовал следующую команду:

FOR %%f IN (*.mkv) DO (
mkvpropedit.exe "%%~nf.mkv" --attachment-name "cover" --attachment-mime-type 
"image/jpeg" --add-attachment "%%~nf.jpg"
)

Странно, как эта команда работает для других приложений, и она не работает для MKVPropedit.

Результат:

Error: The file '%%~nf.jpg' could not be opened for reading: open file error.

Мои файлы jpg не повреждены, поэтому я не знаю, что означает эта ошибка.

1 ответ1

1

Вы должны использовать другую переменную букву в вашей команде FOR. Буква f является одной из букв формата пути (полный список a, d, f, n, p, s, t, x). Например, используйте G, как показано здесь:

FOR %%G IN (*.mkv) DO (mkvpropedit.exe "%%~nG.mkv" --attachment-name "cover" --attachment-mime-type "image/jpeg" --add-attachment "%%~nG.jpg")

Согласно SS64.com G - хороший выбор, потому что он обеспечивает наибольшее количество букв, которые не конфликтуют ни с одной из букв формата пути:

%% G является хорошим выбором, поскольку он не конфликтует ни с одной из букв формата пути (a, d, f, n, p, s, t, x) и обеспечивает самый длинный цикл неконфликтующих букв для использования в качестве неявных параметры. G> H> I> J> K> L> M

Кроме того, если вы запускаете это непосредственно из командной строки, вам нужно использовать одинарные символы%, а не двойные, как показано здесь:

FOR %G IN (*.mkv) DO (mkvpropedit.exe "%~nG.mkv" --attachment-name "cover" --attachment-mime-type "image/jpeg" --add-attachment "%~nG.jpg")

Этот ответ о переполнении стека предоставляет дополнительную информацию об использовании FOR внутри и вне пакетных сценариев.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .