一括 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/cmd ファイル内のとの違いは何ですか?

答え2

私はWSL bashを使ってWindowsコマンドラインからこれを使用しました: 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" から次のセミコロンまでは、ループの現在の反復で mkv ファイル内のすべてのタグを削除するために mkvpropedit を呼び出す for ループです。"done" はループを終了します。-- はオプションの終了を示します。"内部コマンド内の {} は、パラメータ展開を表します。英語で言えば、"ここにあるファイル名を挿入する" という意味です。"

注意: mkvtoolnix をインストールする必要があります: "apt install mkvtoolnix""."

これはサブディレクトリでも機能することに注意してください。

関連情報