Ich versuche, eine Batchdatei zu erstellen, die mkvpropedit
alle Tags aus allen MKV-Dateien in einem Verzeichnis verwendet und entfernt. Bisher ist mir Folgendes gelungen:
@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
Wenn Sie diese Option verwenden, wird das Fenster jedoch Y
einfach geschlossen – selbst wenn das Verzeichnis voller .mkv
Dateien ist.
Ich wäre für jede Hilfe sehr dankbar. Danke fürs Lesen.
Antwort1
Versuchen Sie es folgendermaßen:
FOR %%G IN (*.mkv) DO mkvpropedit "%%G" --tags all: -d title --delete-attachment 1
Hinweis: Für Variablen in Batchdateien sind doppelte % erforderlich (siehe:https://stackoverflow.com/questions/14509652/was-ist-der-unterschied-zwischen-und-in-einer-cmd-datei)
Antwort2
Ich habe dies von der Windows-Befehlszeile mit WSL bash verwendet: Windows/WSL/bash/
find . -name "*.mkv" -exec bash -c 'for f; do mkvpropedit --tags all: "${f%.*}.mkv" ; done' -- {} +
Der erste Teil bis -exec liest und speichert eine Liste von MP4-Dateien. Mit -exec bash -c wird eine Bash-Befehlszeile ausgeführt. Vom "for f" bis zum nächsten Semikolon folgt eine for-Schleife, die mkvpropedit aufruft, um alle Tags in der MKV-Datei in der aktuellen Iteration der Schleife zu löschen. "done" beendet die Schleife. Das -- signalisiert das Ende der Optionen. "Innerhalb des inneren Befehls stellen die {} die Parametererweiterung dar. In philippinischem Englisch bedeutet dies "füge den gefundenen Dateinamen hier ein". "
Beachten Sie, dass mkvtoolnix installiert sein muss: „apt install mkvtoolnix““.
Beachten Sie, dass dies auch in den Unterverzeichnissen funktioniert.