批量删除 MKV 元数据 - 批处理脚本

批量删除 MKV 元数据 - 批处理脚本

我正在尝试创建一个批处理文件,它将使用mkvpropedit并删除目录中所有 mkv 文件的所有标签,到目前为止我已经设法得到了这一点:

@ECHO OFF
TITLE MKV Metadata Remover
ECHO.
ECHO This program executes MKVPropedit to remove all metadata from all mkv 
files in the current directory.
ECHO.

:choice
set /P c=Are you sure you want to continue[Y/N]?
if /I "%c%" EQU "Y" goto :somewhere
if /I "%c%" EQU "N" goto :somewhere_else
goto :choice


:somewhere

FOR /F "tokens=*" %G IN ('dir /b *.mkv') DO mkvpropedit "%G" --tags all: -d 
title --delete-attachment "1" 
pause 
exit

:somewhere_else

ECHO Closing program...
pause
exit

但是,当使用该Y选项时,窗口就会关闭 - 即使在充满.mkv文件的目录中。

任何帮助都将不胜感激,感谢您的阅读。

答案1

尝试这样做:

FOR %%G IN (*.mkv) DO mkvpropedit "%%G" --tags all: -d title --delete-attachment 1

注意:批处理文件中的变量需要双 % (参见:https://stackoverflow.com/questions/14509652/what-is-the-difference-between-and-in-a-cmd-file

答案2

我在 Windows 命令行中使用了 WSL bash:Windows/WSL/bash/

find . -name "*.mkv" -exec bash -c 'for f; do mkvpropedit --tags all: "${f%.*}.mkv" ; done' -- {} +

第一部分,直到 -exec,读取并存储 mp4 文件列表。-exec bash -c 将执行 bash 命令行。从“for f”到下一个分号是一个 for 循环,它调用 mkvpropedit 删除循环当前迭代中 mkv 文件中的所有标签。“done”结束循环。-- 表示选项结束。“在内部命令中,{} 代表参数扩展。在英语中,它的意思是“插入在此处找到的文件名”。

注意必须安装 mkvtoolnix:“apt install mkvtoolnix””。

请注意,这也适用于子目录。

相关内容