Перетащите файлы и папки в пакет команд - PullRequest
0 голосов
/ 28 сентября 2018

Итак, вот последний код, который я сделал с вашей помощью.

@echo off
Title ..::RoboCoveriZer: Auto add covers to your MKV::..
Mode con cols=81 lines=9
IF "%~1"=="" Goto:Error
set mkvpredt=mkvpropedit.exe
pushd "%~1"
for %%I in ("*.mkv") DO (
"%mkvpredt%" "%%~nxI" --attachment-name "cover" --attachment-mime-type "image/jpeg" --add-attachment "%%~nI.jpg"
)
pause
exit

Можно ли как-нибудь открыть окно командной строки и заставить его ждать перетаскивания, чтобы начать процесс?

1 Ответ

0 голосов
/ 30 сентября 2018
@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 удалено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...