我正在尝试创建一个批处理文件,它将使用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””。
请注意,这也适用于子目录。