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""."
これはサブディレクトリでも機能することに注意してください。