@echo off
setlocal
title ..::RoboCoveriZer: Auto add covers to your MKV::..
mode con cols=81 lines=9
set "mkvpredt=mkvpropedit.exe"
:: Get all arguments.
set input=%*
:: Get input path(s) if needed.
if not defined input set /p "input=Enter MKV path(s): "
:: Exit if no input.
if not defined input exit /b
:: Display each argument (optional code).
if defined input for %%A in (%input%) do echo input: %%A
:: Call each argument which can be a file or folder.
for %%A in (%input%) do call :step_1 "%%~A"
pause
exit /b
:step_1
:: Process a folder of MKV files or a single file.
:: Call each MKV file if pushd succeeds.
2>nul pushd "%~1" && (
for %%A in (*.mkv) do call :step_2 "%%~A"
popd
exit /b
)
:: Exit if not MKV file.
if /i not "%~x1" == ".mkv" exit /b 1
:: Call single MKV file.
call :step_2 "%~1"
exit /b
:step_2
:: Coverize MKV file.
echo "%mkvpredt%" "%~f1"^
--attachment-name "cover"^
--attachment-mime-type "image/jpeg"^
--add-attachment "%~dpn1.jpg"
exit /b
Перетаскивание файла обрабатывается %*
.Аргументы командной строки обрабатываются %*
.Если %*
назначена переменная с именем input
, а input
не определена, то используйте set /p
для получения ввода от пользователя.Пользователь может перетащить или скопировать файл или папку в окно, чтобы удовлетворить set /p
, и нажать return , чтобы продолжить.
Предоставленный код может обрабатывать упомянутые действия иможет обрабатывать пути к файлам и папкам.
Первый цикл for
передает каждый аргумент call :step_1
.Это может быть путь к файлу или папке, который может включать шаблоны с подстановочными знаками.
Метка :step_1
пытается pushd
на переданном аргументе, и в случае успеха проходит по *.mkv
и вызывает метку :step_2
с каждымфайл в качестве аргумента.Если pushd не удается, обработайте его как один файл и call :step_2
с файлом в качестве аргумента.
:step_2
выполняет согласование, если echo
удалено.