MKV Sub và Chương loại bỏ


1

Tôi đang cố gắng xóa phụ đề và chương khỏi tất cả các tệp mkv của mình. Tôi đã cố gắng tìm cách thêm tệp bó bên dưới để tìm chương và xóa chúng nhưng không thể tìm ra cách chỉnh sửa dòng tìm kiếm. Bất kỳ giúp đỡ được rất nhiều đánh giá cao.

@echo off
cls
set rootfolder=C:\
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
    for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "subtitles"') do (
        if [%%b]==[0] (
            echo "%%a" has no subtitles
        ) else (
            echo.
            echo "%%a" has subtitles
            mkvmerge -q -o "%%~dpna (No Subs)%%~xa" -S "%%a"
            if errorlevel 1 (
                echo Warnings/errors generated during remuxing, original file not deleted
            ) else (
                del /f "%%a"
                echo Successfully remuxed to "%%~dpna (No Subs)%%~xa", original file deleted
            )
            echo.
        )
    )
)

Nếu tôi viết lại lô như thế này. Nó làm những gì tôi muốn nhưng nó cẩu thả đi qua các tập tin hai lần.

@echo off
cls
set rootfolder="D:\uTorrent\Completed Downloads"
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
    for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "subtitles" ') do (
        if [%%b]==[0] (
            echo "%%a" has no subtitles
        ) else (
            echo.
            echo "%%a" has subtitles
            mkvmerge -q -o "%%~dpna (No Subs)%%~xa" -S --no-chapters "%%a"
            if errorlevel 1 (
                echo Warnings/errors generated during remuxing, original file not deleted
            ) else (
                del /f "%%a"
                echo Successfully remuxed to "%%~dpna (No Subs)%%~xa"
            )
            echo.
        )
    )
)
set rootfolder="D:\uTorrent\Completed Downloads"
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
    for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "chapters" ') do (
        if [%%b]==[0] (
            echo "%%a" has no chapters
        ) else (
            echo.
            echo "%%a" has chapters
            mkvmerge -q -o "%%~dpna (No Chapters)%%~xa" -S --no-chapters "%%a"
            if errorlevel 1 (
                echo Warnings/errors generated during remuxing, original file not deleted
            ) else (
                del /f "%%a"
                echo Successfully remuxed to "%%~dpna (No Chapters)%%~xa"
            )
            echo.
        )
    )
)
pause

Không phải lệnh find cũng cần đường dẫn để tìm kiếm sao? Đã thử nghiệm và nó không hoạt động với đường dẫn hoạt động
Joey

Điều này khá không thực tế, nhưng bạn có thể mã hóa lại chúng mà không cần chương hoặc chương trình sử dụng Handbrake
Jonah

Hợp nhất MKV sẽ loại bỏ các chương trình con và chương nhưng tôi muốn tránh thực hiện chúng từng bước một. Tệp bó này hoạt động hoàn hảo để tìm nếu chúng là subs và loại bỏ chúng nhưng không phải chương. Tôi cũng có thể dễ dàng chỉnh sửa lệnh để loại bỏ các chương nhưng nếu một tệp mkv có các chương nhưng không có chương trình con với thiết lập hiện tại này, nó sẽ không tìm thấy các chương. Tôi đã chỉnh sửa OP của mình với tệp bó tôi đang sử dụng. Có lẽ điều đó sẽ làm sáng tỏ hơn về chủ đề này.
Kevin Mieszala 23/07/14

Câu trả lời:


0

Không chắc chắn chính xác về những gì bạn đang cố gắng làm chính xác, nhưng tôi nghĩ rằng điều này có thể giúp bạn. Bạn có thể sử dụng findstr để tìm kiếm nhiều chuỗi (hoặc biểu thức chính quy!) Và nhiều điều thú vị hơn nhiều. Tôi đã viết và thử nghiệm một ví dụ cho bạn:

c:\tmp\findtest>dir /b
x.txt
y.txt
z.txt

c:\tmp\findtest>type x.txt y.txt z.txt

x.txt:
"this is x"

y.txt:
"this is y"

z.txt:
"this is z"

c:\tmp\findtest>findstr /i /r "x y" *
x.txt:"this is x"
y.txt:"this is y"

/ chỉnh sửa: và nếu cần, thêm | find -c -v "" nếu bạn chỉ quan tâm đến số lượng dòng của đầu ra findstr.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.