Я пытаюсь создать пакетный файл, который будет использовать 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/какая-разница-между-и-в-cmd-файле)
решение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" завершает цикл. -- сигнализирует об окончании параметров. "Во внутренней команде {} представляет собой расширение параметра. На языке pain English это означает "вставьте найденное здесь имя файла". "
Обратите внимание, что mkvtoolnix должен быть установлен: "apt install mkvtoolnix""."
Обратите внимание, что это также работает в подкаталогах.