批量更改多个目录中的mkv文件的标题

时间:2019-02-09 17:32:22

标签: batch-file mkv

好吧,我是这个新手。 基本上,我使用工具调用mkvpropedit来编辑.mkv文件的标题 我的目标是创建一个遍历所有子目录的批处理,并将mkv文件标题替换为其文件名。

我取得了以下进展...

for %%A in (*.mkv) do "C:\mkvpropedit.exe" "%%A" --edit info --set title="%%A"

[1]的问题:它可以正常工作,但不会影响所有子目录,因此我必须在所有子目录中一一使用批处理,这很费时间。

for /R "C:\whatever" %%I in (*mkv) do "C:\whatever\mkvpropedit.exe" "%%I" --edit info --set title="%%I"

问题在这里,它会影响所有子目录,但是我的.mkv文件标题以整个目录路径而不是文件名结尾。

有人可以在这里帮助我吗?提前谢谢。

如果有人知道如何将长目录路径设置为简短形式,以便在整个脚本中重复使用(例如,将“ C:\ whatever \ whatever ... \ mkvpropeditexe转换为mkvpropedit”,那么这将很有帮助。 / p>

2 个答案:

答案 0 :(得分:2)

是否使用%%~nI%%~nxI(如Gerhard Barnard所建议)取决于标题的使用方式:仅“ n ame”或“ n” ame.e x 张力”。

how to set a long directory pathway into a short form to be use repeated throughout the script;设置具有完整路径\名称的变量,然后使用该变量:

set "mkv=C:\whatever\mkvpropedit.exe"
for /R "C:\whatever" %%I in (*.mkv) do "%mkv%" "%%I" --edit info --set title="%%~nI"

答案 1 :(得分:0)

使用此线程的帮助,我开发了一个更精细的批处理脚本:

rem This Bat file will take MKV filenames and apply them to MKV info titles

@echo off

rem Modify next line to path where mkvpropedit.exe  !!!!!!!!!

cd "C:\Program Files\MKVToolNix"

set /A errors1=0

rem Modify next line to path where MKV files are. This will also modify MKV's in subdirectories. !!!!!!!!!

for /R "X:\Move" %%X in (*.mkv) DO CALL :loopbody %%X

echo.
echo.
echo Total Errors = %errors1%
echo.
pause

GOTO :EOF


:loopbody

set title0=%*

set "title1=%title0:.mkv=%"

set "title2=%title1:\=" & set "title2=%"

rem The following two lines are to remove additional info I use in the filenames.

set "title3=%title2: 1080p=%"

set "title4=%title3: 720p=%"

set command1=mkvpropedit "%title0%" --edit info --set "title=%title4%"

for /f "delims=" %%a in ('%command1%') do @set response1=%%a

echo %title2%

echo %response1%

echo.

echo.

if /i "%response1:~0,5%"=="Error" (set /A errors1=%errors1% + 1)

GOTO :EOF