Remoção de metadados MKV em massa - Batch Scipt

Remoção de metadados MKV em massa - Batch Scipt

Estou tentando criar um arquivo em lote que usará mkvpropedite removerá todas as tags de todos os arquivos mkv dentro de um diretório. Até agora consegui isso:

@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

Porém, ao usar a Yopção a janela simplesmente fecha – mesmo em um diretório cheio de .mkvarquivos.

Qualquer ajuda seria muito apreciada, obrigado pela leitura.

Responder1

Tente assim:

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

Nota: % duplo é necessário para variáveis ​​dentro de arquivos em lote (veja:https://stackoverflow.com/questions/14509652/what-is-the-difference-between-and-in-a-cmd-file)

Responder2

Usei isso na linha de comando do Windows com WSL bash: Windows/WSL/bash/

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

A primeira parte, até -exec, lê e armazena uma lista de arquivos mp4. O -exec bash -c executará uma linha de comando bash. Do "for f" ao próximo ponto e vírgula há um loop for que chama mkvpropedit para excluir todas as tags no arquivo mkv na iteração atual do loop. "pronto" encerra o loop. O -- sinaliza o fim das opções. "Dentro do comando interno o {} representa a expansão do parâmetro. Em inglês, significa "insira o nome do arquivo encontrado aqui". "

Nota mkvtoolnix deve estar instalado: "apt install mkvtoolnix""."

Observe que isso também funciona nos subdiretórios.

informação relacionada