这是我在您的帮助下完成的最后一个代码。
@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
有什么方法可以打开命令窗口,并等待其拖放以启动该过程?
答案 0 :(得分:0)
@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
的窗口,然后按
返回以继续。
提供的代码可以处理操作 提到并可以处理文件和文件夹 路径。
第一个for
循环传递每个参数
到call :step_1
。这可以是文件或
可以包含通配符的文件夹路径
模式。
标签:step_1
尝试对参数进行pushd
通过,如果成功,则循环通过
*.mkv
并使用调用标签:step_2
每个文件作为参数。如果推送失败,请对待
它作为一个文件,call :step_2
与
该文件作为参数。
:step_2
, echo
进行掩护
已被删除。