대량 MKV 메타데이터 제거 - 일괄 스크립트

대량 MKV 메타데이터 제거 - 일괄 스크립트

디렉터리 내의 모든 mkv 파일에서 모든 태그를 사용하고 제거하는 배치 파일을 만들려고 하는데 mkvpropedit지금까지 다음과 같은 결과를 얻었습니다.

@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/what-is-the-difference-between-and-in-a-cmd-file)

답변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"".

이는 하위 디렉터리에서도 작동합니다.

관련 정보